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.
Format | Kod T-SQL | Rezultat |
---|---|---|
0 | CONVERT(nvarchar(30), GETDATE(), 0) | Jul 17 2013 5:37PM |
1 | CONVERT(nvarchar(30), GETDATE(), 1) | 07/17/13 |
2 | CONVERT(nvarchar(30), GETDATE(), 2) | 13.07.17 |
3 | CONVERT(nvarchar(30), GETDATE(), 3) | 17/07/13 |
4 | CONVERT(nvarchar(30), GETDATE(), 4) | 17.07.13 |
5 | CONVERT(nvarchar(30), GETDATE(), 5) | 17-07-13 |
6 | CONVERT(nvarchar(30), GETDATE(), 6) | 17 Jul 13 |
7 | CONVERT(nvarchar(30), GETDATE(), 7) | Jul 17, 13 |
8 | CONVERT(nvarchar(30), GETDATE(), 8) | 17:37:46 |
9 | CONVERT(nvarchar(30), GETDATE(), 9) | Jul 17 2013 5:37:46:060PM |
10 | CONVERT(nvarchar(30), GETDATE(), 10) | 07-17-13 |
11 | CONVERT(nvarchar(30), GETDATE(), 11) | 13/07/17 |
12 | CONVERT(nvarchar(30), GETDATE(), 12) | 130717 |
13 | CONVERT(nvarchar(30), GETDATE(), 13) | 17 Jul 2013 17:37:46:060 |
14 | CONVERT(nvarchar(30), GETDATE(), 14) | 17:37:46:060 |
20 | CONVERT(nvarchar(30), GETDATE(), 20) | 2013-07-17 17:37:46 |
21 | CONVERT(nvarchar(30), GETDATE(), 21) | 2013-07-17 17:37:46.060 |
100 | CONVERT(nvarchar(30), GETDATE(), 100) | Jul 17 2013 5:37PM |
101 | CONVERT(nvarchar(30), GETDATE(), 101) | 07/17/2013 |
102 | CONVERT(nvarchar(30), GETDATE(), 102) | 2013.07.17 |
103 | CONVERT(nvarchar(30), GETDATE(), 103) | 17/07/2013 |
104 | CONVERT(nvarchar(30), GETDATE(), 104) | 17.07.2013 |
105 | CONVERT(nvarchar(30), GETDATE(), 105) | 17-07-2013 |
106 | CONVERT(nvarchar(30), GETDATE(), 106) | 17 Jul 2013 |
107 | CONVERT(nvarchar(30), GETDATE(), 107) | Jul 17, 2013 |
108 | CONVERT(nvarchar(30), GETDATE(), 108) | 17:37:46 |
109 | CONVERT(nvarchar(30), GETDATE(), 109) | Jul 17 2013 5:37:46:060PM |
110 | CONVERT(nvarchar(30), GETDATE(), 110) | 07-17-2013 |
111 | CONVERT(nvarchar(30), GETDATE(), 111) | 2013/07/17 |
112 | CONVERT(nvarchar(30), GETDATE(), 112) | 20130717 |
113 | CONVERT(nvarchar(30), GETDATE(), 113) | 17 Jul 2013 17:37:46:060 |
114 | CONVERT(nvarchar(30), GETDATE(), 114) | 17:37:46:060 |
120 | CONVERT(nvarchar(30), GETDATE(), 120) | 2013-07-17 17:37:46 |
121 | CONVERT(nvarchar(30), GETDATE(), 121) | 2013-07-17 17:37:46.060 |
126 | CONVERT(nvarchar(30), GETDATE(), 126) | 2013-07-17T17:37:46.060 |
127 | CONVERT(nvarchar(30), GETDATE(), 127) | 2013-07-17T17:37:46.060 |
130 | CONVERT(nvarchar(30), GETDATE(), 130) | 10 رمضان 1434 5:37:46:060PM |
131 | CONVERT(nvarchar(30), GETDATE(), 131) | 10/09/1434 5:37:46:060PM |
Kategoria:SQL Server
Brak komentarzy - bądź pierwszy