In SQL Server kunt u de CONVERT()
. gebruiken functie om een uitdrukking van het ene gegevenstype naar het andere te converteren. Daarom, als je een string moet converteren naar een datum/tijd formaat, kan deze functie helpen.
Dit artikel bevat voorbeelden om het gebruik ervan te demonstreren.
Syntaxis
De syntaxis gaat als volgt:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Deze argumenten worden als volgt gedefinieerd:
expression
- Elke geldige uitdrukking.
data_type
- Het doelgegevenstype. Dit omvat xml , groot , en sql_variant . Alias-gegevenstypen kunnen niet worden gebruikt.
length
- Een optioneel geheel getal dat de lengte van het doelgegevenstype aangeeft. De standaardwaarde is
30
. style
- Een integer-expressie die specificeert hoe de
CONVERT()
functie vertaalt uitdrukking . Voor een stijlwaarde NULL wordt NULL geretourneerd. data_type bepaalt het bereik.
Voorbeeld 1 – Gegevenstype converteren naar datum
In dit voorbeeld zetten we de tekenreeks om in een datum gegevenstype (we specificeren dit met behulp van date
als het eerste argument).
SELECT CONVERT(date, '20 Dec 2018') AS Result;
Resultaat:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Natuurlijk moet de tekenreeks een stijl hebben die kan worden geconverteerd naar het opgegeven gegevenstype, anders krijg je een foutmelding:
SELECT CONVERT(date, 'Homer') AS Result;
Resultaat:
Conversion failed when converting date and/or time from character string.
Voorbeeld 2 – Converteren naar datum/tijd-gegevenstype
In dit voorbeeld converteren we naar de datetime gegevenstype:
SELECT CONVERT(datetime, '20 Dec 2018') AS Result;
Resultaat:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
U kunt ook de tijd specificeren:
SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;
Resultaat:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
Voorbeeld 3 – Converteren naar datetime2 gegevenstype
In dit voorbeeld converteren we naar de datetime2 gegevenstype:
SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;
Resultaat:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Voorbeeld 4 – Converteren naar datatimeoffset datatype
In dit voorbeeld converteren we naar de datetimeoffset gegevenstype:
SELECT CONVERT(datetimeoffset, '20 Dec 2018') AS Result;
Resultaat:
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
Voorbeeld 5 – Converteren naar datatype smalldatetime
In dit voorbeeld converteren we naar de smalldatetime gegevenstype:
SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;
Resultaat:
+---------------------+ | Result | |---------------------| | 2018-12-20 00:00:00 | +---------------------+
Voorbeeld 6 – Converteren naar tijdgegevenstype
In dit voorbeeld converteren we naar de tijd gegevenstype:
SELECT CONVERT(time, '20 Dec 2018') AS Result;
Resultaat:
+----------+ | Result | |----------| | 00:00:00 | +----------+
In dat geval hebben we een datum opgegeven, maar geen tijd, dus het kwam terug als 00:00:00
. Hier is nog een voorbeeld waarbij we daadwerkelijk een tijd specificeren:
SELECT CONVERT(time, '2pm') AS Result;
Resultaat:
+----------+ | Result | |----------| | 14:00:00 | +----------+
Maar als we de datum toevoegen, krijgen we een foutmelding (in tegenstelling tot een eerder voorbeeld toen we converteerden naar datetime ):
SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;
Resultaat:
Conversion failed when converting date and/or time from character string.
Dus in dit geval moet je converteren naar datetime of smalldatetime .
Voorbeeld 7 – De datum weglaten
Als u de datum weglaat tijdens het converteren naar de datetime of smalldatetime gegevenstypen, retourneert het 1900-01-01
als de datum:
SELECT CONVERT(datetime, '2pm') AS Result;
Resultaat:
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
Als je een foutmelding krijgt tijdens het converteren van een string naar een datum, probeer dan de PARSE()
in plaats daarvan functioneren. Het werkt in sommige gevallen waar CONVERT()
niet.
Misschien wil je ook de CAST()
. bekijken functie, wat een ANSI SQL-standaardmanier is om tussen gegevenstypen te converteren. Hier leest u hoe u een tekenreeks naar een datum/tijd kunt converteren met CAST()
.