sql >> Database teknologi >  >> RDS >> Sqlserver

6 måder at konvertere en streng til en dato/tidsværdi i SQL Server

Hvis du skal konvertere en streng til en dato/tidsværdi i SQL Server, har du en række muligheder. I dette indlæg skitserer jeg seks T-SQL-funktioner, der giver dig mulighed for at gøre dette.

De seks funktioner er:

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

Nedenfor er eksempler på, hvordan du kan bruge disse funktioner til at konvertere en streng til en datatype for dato/klokkeslæt.

CAST()-funktionen

I dette eksempel konverterer vi strengen til en dato datatype (vi angiver dette ved at bruge date som det andet argument).

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

Resultat:

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

For flere eksempler, se Sådan konverteres en streng til en dato/tid i SQL Server ved hjælp af CAST() .

Konverter()-funktionen

Her udfører vi den samme konvertering som det foregående eksempel, men med CONVERT() fungere. Den eneste forskel her er syntaksen.

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

Resultat:

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

For flere eksempler, se Sådan konverteres en streng til en dato/tid i SQL Server ved hjælp af CONVERT() .

FUNKTIONEN PARSE()

I dette eksempel tilføjer jeg ugedagen som en del af strengen. Grunden til, at jeg gør dette, er for at demonstrere den fordel, denne funktion har i forhold til de andre. Hvis du angiver datoen i dette format til de andre funktioner, får du en fejl. Men PARSE() funktion kan håndtere dette:

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

Resultat:

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

For flere eksempler, se Sådan konverteres en streng til en dato/tid i SQL Server ved hjælp af PARSE() .

TRY_CAST()-funktionen

Du kan bruge TRY_CAST() i stedet for CAST() for at give en mere smidig måde at håndtere fejl på. Når du bruger CAST() funktion, hvis castet fejler, returnerer det en fejl. Men hvis du bruger TRY_CAST() funktion i stedet returnerer den NULL i sådanne tilfælde.

Her er et eksempel på, at en rollebesætning mislykkedes:

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

Resultat:

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

Hvis vi angiver den samme værdi til CAST() funktion i stedet, her er hvad der sker:

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

Resultat:

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

For flere eksempler, se CAST vs TRY_CAST i SQL Server:Hvad er forskellen?

TRY_CONVERT()-funktionen

Du kan også bruge TRY_CONVERT() i stedet for CONVERT() for bedre fejlhåndtering. Hvis CONVERT() funktion mislykkes, den returnerer en fejl. Men hvis TRY_CONVERT() mislykkes, returnerer den NULL .

Her er et eksempel på en konvertering, der mislykkedes:

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

Resultat:

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

Hvis vi giver den samme værdi til CONVERT() funktion i stedet, her er hvad der sker:

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

Resultat:

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

For flere eksempler, se CONVERT vs TRY_CONVERT i SQL Server:Hvad er forskellen?

TRY_PARSE()-funktionen

Du kan også bruge TRY_PARSE() i stedet for PARSE() for bedre fejlhåndtering. Hvis PARSE() funktion mislykkes, den returnerer en fejl. Men hvis TRY_PARSE() mislykkes, returnerer den NULL .

Her er et eksempel på en konvertering, der mislykkedes:

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

Resultat:

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

Hvis vi giver den samme værdi til PARSE() funktion i stedet, her er hvad der sker:

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

Resultat:

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

  1. Erstat første forekomst af understreng i en streng i SQL

  2. Automatisk sletning af glemte transaktioner i MS SQL Server

  3. hvordan man erklærer global variabel i SQL Server ..?

  4. gemmer python-objekt i postgres-bord med pickle