Den CONVERT()
funktionen låter dig konvertera mellan datatyper. Det liknar CAST()
funktion, men en av fördelarna med CONVERT()
är att när du konverterar från en datatyp för datum/tid till en sträng kan du lägga till ett valfritt argument som anger stilen som du vill att returvärdet ska vara i. Du kan till exempel få det returnerat som dd .mm.åååå , åååå-mm-dd , dd mån åååå osv
Den här artikeln innehåller exempel på olika stilar som du kan returnera när du konverterar ett datum-/tidsvärde till en sträng med CONVERT()
funktion i SQL Server.
Grundläggande exempel
Standardformatet vid konvertering från datetime och smalldatetime datatyper är 0
och 100
(dessa representerar samma stil). Därför, när du inte tillhandahåller en stil (tredje parametern), är den utformad så här:
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 dock ett annat resultat om den ursprungliga datatypen inte är datetime eller smalldatetime .
Om du vill att den ska returneras i en annan stil måste du ange ett tredje argument.
Stilar med tvåsiffriga år
Nedan finns exempel på olika värden som du kan använda för att specificera stilen med en tvåsiffrig årtalskomponent.
Stil 1 till 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 till 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 | +------------+----------+----------+----------+--------+------------------+
Stilar med fyra siffror
Nedan finns exempel på olika värden du kan använda för att specificera stilen med en fyrsiffrig årskomponent.
Stil 100 till 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 till 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 till 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 till 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 till 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 varnar för att detta värde inte återges korrekt på en standardinstallation av SSMS i USA.
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äsa mer om tillgängliga datum-/tidsstilar på Microsofts webbplats.