sql >> Database >  >> RDS >> Sqlserver

Hoe te converteren tussen datumnotaties in SQL Server met behulp van CAST()

In SQL Server kunt u de CONVERT() . gebruiken functie om een ​​datumwaarde van het ene datumgegevenstype naar het andere te converteren (of tussen een ander gegevenstype wat dat betreft). Dat is echter niet de enige functie in de T-SQL-toolbox voor het converteren tussen gegevenstypen.

De CAST() functie maakt deel uit van de ANSI SQL-standaard en doet de meeste dingen CONVERT() doet. In veel gevallen heeft u dus de keuze welke van deze functies u het liefst gebruikt.

Veel databaseprofessionals geven de voorkeur aan CAST() vanwege het feit dat het deel uitmaakt van de ANSI SQL-standaard, geven anderen echter de voorkeur aan CONVERT() vanwege de extra functionaliteit die de implementatie van T-SQL biedt (zoals het kunnen voorzien van een datumstijl).

In ieder geval geeft dit artikel voorbeelden van het converteren tussen verschillende datumnotaties met behulp van CAST() .

Syntaxis

De syntaxis gaat als volgt:

CAST ( expression AS data_type [ ( length ) ] )

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 .

Voorbeeld 1 – Cast SYSDATETIME() als datum

In dit voorbeeld genereren we de huidige datum/tijd met de SYSDATETIME() functie en cast de geretourneerde waarde als een datum gegevenstype.

Merk op dat de SYSDATETIME() genereert zijn waarde als een datetime2(7) gegevenstype, dus we converteren het van dat gegevenstype naar een ander gegevenstype.

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

Resultaat:

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

Voorbeeld 2 – Cast SYSDATETIME() als smalldatetime

In dit voorbeeld casten we de datum als een smalldatetime gegevenstype.

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

Resultaat:

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

Voorbeeld 3 – Cast SYSDATETIME() als datetimeoffset

In dit voorbeeld casten we de datum als een datetimeoffset gegevenstype.

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

Resultaat:

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

Voorbeeld 4 – Cast SYSDATETIME() als tijd

U bent niet beperkt tot het weergeven van de datumcomponent van de waarde. Je kunt het ook casten als een tijd gegevenstype, zodat alleen de tijdcomponent wordt geretourneerd. Zoals dit:

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

Resultaat:

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

Voorbeeld 5 – Cast SYSDATETIMEOFFSET() als datum

Hier is een voorbeeld waarin een andere functie wordt gebruikt om de oorspronkelijke datum/tijd-waarde te genereren:

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

Resultaat:

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

Voorbeeld 6 – Converteren vanuit een databasequery

Hier is een voorbeeld van het converteren van de datum die is opgehaald uit een kolom in de WideWorldImporters voorbeelddatabase:

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

Resultaat:

+-----------------------------+-------------+
| 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  |
+-----------------------------+-------------+

Ik heb ook een bericht geschreven dat laat zien hoe je kunt converteren tussen datumnotaties met behulp van de CONVERT() functie met dezelfde voorbeelden als hierboven.


  1. Kan ik negeer_dup_key inschakelen voor een primaire sleutel?

  2. Wat is de juiste manier om de node.js postgresql-module te gebruiken?

  3. Een tekenreeks in een SQL Server-tabelkolom vervangen

  4. Hoe TOON KARAKTERSET werkt in MariaDB