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

Sådan konverteres en dato/tidsværdi til en streng i SQL Server ved hjælp af CONVERT()

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 xmlbigt , 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.


  1. Oracle:Konverter valutabeløb i ord ved hjælp af PL/SQL

  2. Apache NiFi

  3. Databasebevidst belastningsbalancering:Sådan migreres fra HAProxy til ProxySQL

  4. Sådan installeres MariaDB 10 på Debian og Ubuntu