Den CONVERT()
funktionen giver dig mulighed for at konvertere mellem datatyper. Det ligner CAST()
funktion, men en af fordelene ved CONVERT()
er, at når du konverterer fra en dato/klokkeslæt datatype til en streng, kan du tilføje et valgfrit argument, der angiver den typografi, som du vil have returværdien i. Du kan f.eks. få den returneret som dd .mm.åååå , åååå-mm-dd , dd man åååå osv.
Denne artikel indeholder eksempler på de forskellige stilarter, du kan returnere, når du konverterer en dato/tidsværdi til en streng ved hjælp af CONVERT()
funktion i SQL Server.
Grundlæggende eksempel
Standardstilen ved konvertering fra datetime og smalldatetime datatyper er 0
og 100
(disse repræsenterer den samme stil). Derfor, når du ikke angiver en stil (tredje parameter), er den stilet sådan her:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar, @date) AS Converted;
Resultat:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
Du får dog et andet resultat, hvis den oprindelige datatype ikke er datetime eller smalldatetime .
Hvis du har brug for, at det returneres i en anden stil, skal du angive et tredje argument.
Stilarter med tocifrede årstal
Nedenfor er eksempler på de forskellige værdier, du kan bruge til at angive stilen ved hjælp af en tocifret årstalskomponent.
Stil 1 til 6
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 1) AS '1', CONVERT(nvarchar(30), @date, 2) AS '2', CONVERT(nvarchar(30), @date, 3) AS '3', CONVERT(nvarchar(30), @date, 4) AS '4', CONVERT(nvarchar(30), @date, 5) AS '5', CONVERT(nvarchar(30), @date, 6) AS '6';
Resultat:
+----------+----------+----------+----------+----------+-----------+ | 1 | 2 | 3 | 4 | 5 | 6 | |----------+----------+----------+----------+----------+-----------| | 06/07/18 | 18.06.07 | 07/06/18 | 07.06.18 | 07-06-18 | 07 Jun 18 | +----------+----------+----------+----------+----------+-----------+
Stil 7 til 6
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 7) AS '7', CONVERT(nvarchar(30), @date, 8) AS '8', CONVERT(nvarchar(30), @date, 10) AS '10', CONVERT(nvarchar(30), @date, 11) AS '11', CONVERT(nvarchar(30), @date, 12) AS '12', CONVERT(nvarchar(30), @date, 14) AS '14';
Resultat:
+------------+----------+----------+----------+--------+------------------+ | 7 | 8 | 10 | 11 | 12 | 14 | |------------+----------+----------+----------+--------+------------------| | Jun 07, 18 | 00:00:00 | 06-07-18 | 18/06/07 | 180607 | 00:00:00.0000000 | +------------+----------+----------+----------+--------+------------------+
Stilarter med fire cifrede år
Nedenfor er eksempler på de forskellige værdier, du kan bruge til at angive stilen ved hjælp af en firecifret årstalskomponent.
Stil 100 til 103
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 100) AS '100', CONVERT(nvarchar(30), @date, 101) AS '101', CONVERT(nvarchar(30), @date, 102) AS '102', CONVERT(nvarchar(30), @date, 103) AS '103';
Resultat:
+---------------------+------------+------------+------------+ | 100 | 101 | 102 | 103 | |---------------------+------------+------------+------------| | Jun 7 2018 2:35AM | 06/07/2018 | 2018.06.07 | 07/06/2018 | +---------------------+------------+------------+------------+
Stil 104 til 108
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 104) AS '104', CONVERT(nvarchar(30), @date, 105) AS '105', CONVERT(nvarchar(30), @date, 106) AS '106', CONVERT(nvarchar(30), @date, 107) AS '107', CONVERT(nvarchar(30), @date, 108) AS '108';
Resultat:
+------------+------------+-------------+--------------+----------+ | 104 | 105 | 106 | 107 | 108 | |------------+------------+-------------+--------------+----------| | 07.06.2018 | 07-06-2018 | 07 Jun 2018 | Jun 07, 2018 | 02:35:52 | +------------+------------+-------------+--------------+----------+
Stil 109 til 112
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 109) AS '109', CONVERT(nvarchar(30), @date, 110) AS '110', CONVERT(nvarchar(30), @date, 111) AS '111', CONVERT(nvarchar(30), @date, 112) AS '112';
Resultat:
+--------------------------------+------------+------------+----------+ | 109 | 110 | 111 | 112 | |--------------------------------+------------+------------+----------| | Jun 7 2018 2:35:52.8537677AM | 06-07-2018 | 2018/06/07 | 20180607 | +--------------------------------+------------+------------+----------+
Stil 113 til 114
DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677'; SELECT CONVERT(nvarchar(30), @date, 113) AS '113', CONVERT(nvarchar(30), @date, 114) AS '114';
Resultat:
+------------------------------+------------------+ | 113 | 114 | |------------------------------+------------------| | 07 Jun 2018 02:35:52.8537677 | 02:35:52.8537677 | +------------------------------+------------------+
Stil 120 til 127
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 120) AS '120', CONVERT(nvarchar(30), @date, 126) AS '126', CONVERT(nvarchar(30), @date, 127) AS '127';
Resultat:
+---------------------+---------------------+---------------------+ | 120 | 126 | 127 | |---------------------+---------------------+---------------------| | 2018-06-07 00:00:00 | 2018-06-07T00:00:00 | 2018-06-07T00:00:00 | +---------------------+---------------------+---------------------+
Stil 130
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 130) AS '130';
Resultat:
+--------------------------------+ | 130 | |--------------------------------| | 24 رمضان 1439 12:00:00.0000000 | +--------------------------------+
Microsoft advarer om, at denne værdi ikke gengives korrekt på en amerikansk standardinstallation af SSMS.
Stil 131
DECLARE @date datetime2 = '2018-06-07'; SELECT CONVERT(nvarchar(30), @date, 131) AS '131';
Resultat:
+-------------------------------+ | 131 | |-------------------------------| | 24/09/1439 12:00:00.0000000AM | +-------------------------------+
Du kan læse mere om de tilgængelige dato-/tidsstile på Microsofts websted.