Spis treści:

Kategoria:SQL Server


Konwersja datetime na nvarchar

Data i jej reprezentacja tekstowa

Z wyświetlaniem i przetwarzaniem dat od zawsze był problem. Nie ma znaczenia, czy to C, Java, SQL, czy jakikolwiek inny dokument istniejący poza światem informatyki. Czy zapisywać ją z kropkami, myślnikami, ukośnikami? Czy najpierw umieszczać rok, czy najpierw dzień miesiąca. A może sam miesiąc na początku? Jak odczytać datę 01/02/03? Które to dzień, które miesiąc, które rok? Takie dyskusje można prowadzić w nieskończoność i pewnie do niczego nie doprowadzą. Najwyżej do potwierdzenia teorii, że gdzie dwie osoby, tam trzy różne zdania. Przyznam się, że niejednokrotnie musiałem szukać tej informacji i dobierać odpowiedni format. Dokumentacja MSDN jest tak obszerna, że odnajdywanie w niej potrzebnej informacji nie jest takie trywialne. Postanowiłem zrobić sobie pomocniczą tabelkę, która, mam nadzieję, przyda się także innym. W przykładach zastosowałem jednolite rzutowanie na typ nvarchar, ale o ile nie stosujemy kalendarza muzułmańskiego (Hijri), można stosować rzutowanie na typ varchar. Przy okazji polecam wpis na temat różnic pomiędzy varchar i nvarchar.

Tabela formatów daty

Przyjrzyjmy się zatem obiecanemu zestawieniu formatów, przykładowym wywołaniom i ich wynikowi, czyli reprezentacji tekstowej. Wszystkie wartości reprezentują dzień 17 lipca, 2013, godzinę 17:37, 46 sekund i 60 tysięcznych części sekundy.

FormatKod T-SQLRezultat
0CONVERT(nvarchar(30), GETDATE(), 0)Jul 17 2013 5:37PM
1CONVERT(nvarchar(30), GETDATE(), 1)07/17/13
2CONVERT(nvarchar(30), GETDATE(), 2)13.07.17
3CONVERT(nvarchar(30), GETDATE(), 3)17/07/13
4CONVERT(nvarchar(30), GETDATE(), 4)17.07.13
5CONVERT(nvarchar(30), GETDATE(), 5)17-07-13
6CONVERT(nvarchar(30), GETDATE(), 6)17 Jul 13
7CONVERT(nvarchar(30), GETDATE(), 7)Jul 17, 13
8CONVERT(nvarchar(30), GETDATE(), 8)17:37:46
9CONVERT(nvarchar(30), GETDATE(), 9)Jul 17 2013 5:37:46:060PM
10CONVERT(nvarchar(30), GETDATE(), 10)07-17-13
11CONVERT(nvarchar(30), GETDATE(), 11)13/07/17
12CONVERT(nvarchar(30), GETDATE(), 12)130717
13CONVERT(nvarchar(30), GETDATE(), 13)17 Jul 2013 17:37:46:060
14CONVERT(nvarchar(30), GETDATE(), 14)17:37:46:060
20CONVERT(nvarchar(30), GETDATE(), 20)2013-07-17 17:37:46
21CONVERT(nvarchar(30), GETDATE(), 21)2013-07-17 17:37:46.060
100CONVERT(nvarchar(30), GETDATE(), 100)Jul 17 2013 5:37PM
101CONVERT(nvarchar(30), GETDATE(), 101)07/17/2013
102CONVERT(nvarchar(30), GETDATE(), 102)2013.07.17
103CONVERT(nvarchar(30), GETDATE(), 103)17/07/2013
104CONVERT(nvarchar(30), GETDATE(), 104)17.07.2013
105CONVERT(nvarchar(30), GETDATE(), 105)17-07-2013
106CONVERT(nvarchar(30), GETDATE(), 106)17 Jul 2013
107CONVERT(nvarchar(30), GETDATE(), 107)Jul 17, 2013
108CONVERT(nvarchar(30), GETDATE(), 108)17:37:46
109CONVERT(nvarchar(30), GETDATE(), 109)Jul 17 2013 5:37:46:060PM
110CONVERT(nvarchar(30), GETDATE(), 110)07-17-2013
111CONVERT(nvarchar(30), GETDATE(), 111)2013/07/17
112CONVERT(nvarchar(30), GETDATE(), 112)20130717
113CONVERT(nvarchar(30), GETDATE(), 113)17 Jul 2013 17:37:46:060
114CONVERT(nvarchar(30), GETDATE(), 114)17:37:46:060
120CONVERT(nvarchar(30), GETDATE(), 120)2013-07-17 17:37:46
121CONVERT(nvarchar(30), GETDATE(), 121)2013-07-17 17:37:46.060
126CONVERT(nvarchar(30), GETDATE(), 126)2013-07-17T17:37:46.060
127CONVERT(nvarchar(30), GETDATE(), 127)2013-07-17T17:37:46.060
130CONVERT(nvarchar(30), GETDATE(), 130)10 رمضان 1434 5:37:46:060PM
131CONVERT(nvarchar(30), GETDATE(), 131)10/09/1434 5:37:46:060PM

Kategoria:SQL Server

, 2013-12-20

Brak komentarzy - bądź pierwszy

Dodaj komentarz
Wyślij
Ostatnie komentarze
Dzieki za rozjasnienie zagadnienia upsert. wlasnie sie ucze programowania :).
Co się stanie gdy spróbuję wyszukać:
SELECT * FROM NV_Airport WHERE Code='SVO'
SELECT * FROM V_Airport WHERE Code=N'SVO'
(odwrotnie są te N-ki)
Będzie konwersja czy nie znajdzie żadnego rekordu?