sql >> Database >  >> RDS >> Sqlserver

Een tekenreeks converteren naar een datum/tijd in SQL Server met CONVERT()

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 xmlgroot , 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() .


  1. Haal de laatste dag van de maand in SQL

  2. Kan %NOTFOUND null retourneren na een fetch?

  3. Rails 3.1:Postgres opvragen voor records binnen een tijdsbereik

  4. Hoe Array/Table Parameter te gebruiken voor Oracle (ODP.NET 10g) via ADO.NET/C#?