Når du bruger SQL Server, kan du konvertere en dato/tidsværdi til en streng ved at bruge CONVERT()
fungere. Denne funktion giver dig mulighed for at konvertere mellem forskellige datatyper.
I denne artikel konverterer vi mellem forskellige dato-/tidsdatatyper til en varchar
eller nvarchar
streng.
En af de gode ting ved denne funktion er, at den giver dig mulighed for at angive stilen, som datoen skal returneres i. Du kan f.eks. angive, om den returneres som mm/dd/åååå , åååå.mm.dd , man dd, åååå osv. Du kan også angive, om tidskomponenten returneres, og hvordan den er stylet.
Syntaks
For det første, her er, hvordan den officielle syntaks går:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Disse argumenter er defineret som følger:
expression
- Ethvert gyldigt udtryk.
data_type
- Måldatatypen. Dette inkluderer xml , bigt , og sql_variant . Aliasdatatyper kan ikke bruges.
length
- Et valgfrit heltal, der angiver længden af måldatatypen. Standardværdien er
30
. style
- Et heltalsudtryk, der specificerer, hvordan
CONVERT()
funktion vil oversætte udtryk . For en stilværdi på NULL, returneres NULL. data_type bestemmer området.
Grundlæggende eksempel
I dette eksempel erklærer vi en variabel og tildeler en værdi fra GETDATE()
fungere. Vi returnerer derefter værdien, og vi konverterer også denne værdi til varchar
og returner det:
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 | +-------------------------+---------------------+
Standardlængden af returdatatypen er 30
, så selvom vi kun specificerede varchar
, vil det returnere resultatet som en varchar(30)
.
I dette eksempel har vi ikke givet et tredje argument til at angive den typografi, som vi vil have den returneret i. Derfor er den blevet konverteret ved hjælp af standardtypografien for datetime og smalldatetime datatyper, som er 0
eller 100
(mere om stilarter nedenfor).
Specificering af en stilart
Du kan bruge et tredje argument til at specificere den stil, som returværdien vil tage på:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 102) AS Converted;
Resultat:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:42:33.840 | 2018.06.07 | +-------------------------+-------------+
I dette eksempel specificerede vi en stil på 102
, som er ANSI-standarden for visning af en dato med en firecifret årstalskomponent.
For at ændre dette til et ANSI-format med et tocifret år, kan vi bruge stilen 2
:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 2) AS Converted;
Resultat:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:44:52.433 | 18.06.07 | +-------------------------+-------------+
Du kan se flere eksempler på CONVERT() fra dato/tid til strengeksempler i SQL Server.