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

Sådan konverteres mellem datoformater i SQL Server ved hjælp af CAST()

I SQL Server kan du bruge CONVERT() funktion til at konvertere en datoværdi fra én datodatatype til en anden (eller mellem enhver anden datatype for den sags skyld). Det er dog ikke den eneste funktion i T-SQL-værktøjskassen til konvertering mellem datatyper.

CAST() funktion er en del af ANSI SQL-standarden, og den gør de fleste ting CONVERT() gør. Så i mange tilfælde har du mulighed for, hvilken af ​​disse funktioner du foretrækker at bruge.

Mange databaseprofessionelle foretrækker CAST() på grund af det faktum, at det er en del af ANSI SQL-standarden, foretrækker andre dog CONVERT() på grund af den ekstra funktionalitet, som T-SQL’s implementering tilbyder (såsom at kunne levere en datostil).

Under alle omstændigheder giver denne artikel eksempler på konvertering mellem forskellige datoformater ved hjælp af CAST() .

Syntaks

Syntaksen ser sådan ud:

CAST ( expression AS data_type [ ( length ) ] )

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 .

Eksempel 1 – Cast SYSDATETIME() som dato

I dette eksempel genererer vi den aktuelle dato/tid med SYSDATETIME() funktion og cast returværdien som en dato datatype.

Bemærk, at SYSDATETIME() genererer sin værdi som en datetime2(7) datatype, så vi konverterer den fra den datatype til en anden datatype.

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS date) AS Converted;

Resultat:

+-----------------------------+-------------+
| Original                    | Converted   |
|-----------------------------+-------------|
| 2018-06-07 00:15:32.9265884 | 2018-06-07  |
+-----------------------------+-------------+

Eksempel 2 – Cast SYSDATETIME() som smalldatetime

I dette eksempel caster vi datoen som en smalldatetime datatype.

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS smalldatetime) AS Converted;

Resultat:

+-----------------------------+---------------------+
| Original                    | Converted           |
|-----------------------------+---------------------|
| 2018-06-07 00:16:05.5142017 | 2018-06-07 00:16:00 |
+-----------------------------+---------------------+

Eksempel 3 – Cast SYSDATETIME() som datetime offset

I dette eksempel caster vi datoen som en dato-tidsforskydning datatype.

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS datetimeoffset) AS Converted;

Resultat:

+-----------------------------+------------------------------------+
| Original                    | Converted                          |
|-----------------------------+------------------------------------|
| 2018-06-07 10:19:23.9457462 | 2018-06-07 10:19:23.9457462 +00:00 |
+-----------------------------+------------------------------------+

Eksempel 4 – Cast SYSDATETIME() som tid

Du er ikke begrænset til at vise værdiens datokomponent. Du kan også caste det som et tidspunkt datatype, således at kun tidskomponenten returneres. Sådan:

SELECT 
    SYSDATETIME() AS Original,
    CAST(SYSDATETIME() AS time) AS Converted;

Resultat:

+-----------------------------+------------------+
| Original                    | Converted        |
|-----------------------------+------------------|
| 2018-06-07 00:20:21.5829364 | 00:20:21.5829364 |
+-----------------------------+------------------+

Eksempel 5 – Cast SYSDATETIMEOFFSET() som dato

Her er et eksempel, der bruger en anden funktion til at generere den oprindelige dato/tidsværdi:

SELECT 
    SYSDATETIMEOFFSET() AS Original,
    CAST(SYSDATETIMEOFFSET() AS date) AS Converted;

Resultat:

+------------------------------------+----------------------+
| Original                           | Converted            |
|------------------------------------+----------------------|
| 2018-06-07 10:21:16.3617030 +10:00 | 2018-06-07           |
+------------------------------------+----------------------+

Eksempel 6 – Konvertering fra en databaseforespørgsel

Her er et eksempel på konvertering af datoen, der er hentet fra en kolonne i WideWorldImporters eksempeldatabase:

USE WideWorldImporters;
SELECT DISTINCT TOP 10 
    LastEditedWhen, 
    CAST(LastEditedWhen AS date) AS 'Converted'
FROM Sales.CustomerTransactions;

Resultat:

+-----------------------------+-------------+
| LastEditedWhen              | Converted   |
|-----------------------------+-------------|
| 2013-01-02 11:30:00.0000000 | 2013-01-02  |
| 2013-01-03 11:30:00.0000000 | 2013-01-03  |
| 2013-01-04 11:30:00.0000000 | 2013-01-04  |
| 2013-01-05 11:30:00.0000000 | 2013-01-05  |
| 2013-01-06 11:30:00.0000000 | 2013-01-06  |
| 2013-01-08 11:30:00.0000000 | 2013-01-08  |
| 2013-01-09 11:30:00.0000000 | 2013-01-09  |
| 2013-01-10 11:30:00.0000000 | 2013-01-10  |
| 2013-01-11 11:30:00.0000000 | 2013-01-11  |
| 2013-01-12 11:30:00.0000000 | 2013-01-12  |
+-----------------------------+-------------+

Jeg har også skrevet et indlæg, der viser, hvordan man konverterer mellem datoformater ved hjælp af CONVERT() funktion ved at bruge de samme eksempler som ovenfor.


  1. Bedste praksis i skalering af databaser:Del 1

  2. SQL Server 2017 Backup -3

  3. Tilføj timer til en tidsværdi i PostgreSQL

  4. Heroku Rails 4 kunne ikke oprette forbindelse til serveren:forbindelsen blev afvist