sql >> Database >  >> RDS >> Sqlserver

6 manieren om een ​​string te converteren naar een datum/tijd-waarde in SQL Server

Als u een string moet converteren naar een datum/tijd-waarde in SQL Server, heeft u een aantal opties. In dit bericht schets ik zes T-SQL-functies waarmee je dit kunt doen.

De zes functies zijn:

  • CAST()
  • CONVERT()
  • PARSE()
  • TRY_CAST()
  • TRY_CONVERT()
  • TRY_PARSE()

Hieronder vindt u voorbeelden van hoe u deze functies kunt gebruiken om een ​​tekenreeks om te zetten in een datum/tijd-gegevenstype.

De CAST()-functie

In dit voorbeeld zetten we de tekenreeks om in een datum gegevenstype (we specificeren dit met behulp van date als het tweede argument).

SELECT CAST('20 Dec 2018' AS date) AS Result;

Resultaat:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Zie voor meer voorbeelden Een tekenreeks converteren naar een datum/tijd in SQL Server met CAST() .

De CONVERT() Functie

Hier doen we dezelfde conversie als in het vorige voorbeeld, maar met de CONVERT() functie. Het enige verschil hier is de syntaxis.

SELECT CONVERT(date, '20 Dec 2018') AS Result;

Resultaat:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Zie voor meer voorbeelden Een tekenreeks converteren naar een datum/tijd in SQL Server met CONVERT() .

De PARSE()-functie

In dit voorbeeld voeg ik de weekdag toe als onderdeel van de tekenreeks. De reden dat ik dit doe, is om het voordeel aan te tonen dat deze functie heeft ten opzichte van de andere. Als u de datum in dit formaat doorgeeft aan de andere functies, krijgt u een foutmelding. Maar de PARSE() functie kan dit aan:

SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) 
AS 'Result';

Resultaat:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Zie voor meer voorbeelden Een tekenreeks converteren naar een datum/tijd in SQL Server met PARSE() .

De TRY_CAST() Functie

U kunt TRY_CAST() . gebruiken in plaats van CAST() om een ​​soepelere manier te bieden om fouten af ​​te handelen. Bij gebruik van de CAST() functie, als de cast mislukt, wordt een fout geretourneerd. Als u echter de TRY_CAST() functie in plaats daarvan retourneert het NULL in dergelijke gevallen.

Hier is een voorbeeld van een mislukte cast:

SELECT TRY_CAST('Next month' AS date) AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Als we dezelfde waarde aan de CAST() functie in plaats daarvan, dit is wat er gebeurt:

SELECT CAST('Next month' AS date) AS Result;

Resultaat:

Conversion failed when converting date and/or time from character string.

Zie CAST . voor meer voorbeelden vs TRY_CAST in SQL Server:wat is het verschil?

De TRY_CONVERT() Functie

U kunt ook TRY_CONVERT() . gebruiken in plaats van CONVERT() voor een betere foutafhandeling. Als de CONVERT() functie mislukt, wordt een fout geretourneerd. Maar als de TRY_CONVERT() mislukt, retourneert het NULL .

Hier is een voorbeeld van een mislukte conversie:

SELECT TRY_CONVERT(date, 'Next month') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Als we dezelfde waarde geven aan de CONVERT() functie in plaats daarvan, dit is wat er gebeurt:

SELECT CONVERT(date, 'Next month') AS Result;

Resultaat:

Conversion failed when converting date and/or time from character string.

Zie CONVERT . voor meer voorbeelden vs TRY_CONVERT in SQL Server:wat is het verschil?

De TRY_PARSE() Functie

U kunt ook TRY_PARSE() . gebruiken in plaats van PARSE() voor een betere foutafhandeling. Als de PARSE() functie mislukt, wordt een fout geretourneerd. Maar als de TRY_PARSE() mislukt, retourneert het NULL .

Hier is een voorbeeld van een mislukte conversie:

SELECT TRY_PARSE('Next month' AS date) AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Als we dezelfde waarde geven aan de PARSE() functie in plaats daarvan, dit is wat er gebeurt:

SELECT PARSE('Next month' AS date) AS Result;

Resultaat:

Error converting string value 'Next month' into data type date using culture ''.

  1. *ALERT* Kan geen databasefout meer openen met Microsoft Office build 2201

  2. Hoe de meest recente set gedateerde records uit een mysql-tabel te selecteren?

  3. Hoe REPEAT() werkt in MariaDB

  4. Wijzigingsmelding Oracle Database