sql >> Databáze >  >> RDS >> Sqlserver

Jak převést mezi formáty data na serveru SQL pomocí CAST ()

V SQL Server můžete použít CONVERT() funkce pro převod hodnoty data z jednoho datového typu data na jiný (nebo mezi jakýmkoli jiným datovým typem). To však není jediná funkce v sadě nástrojů T-SQL pro převod mezi datovými typy.

CAST() funkce je součástí standardu ANSI SQL a dělá většinu věcí CONVERT() dělá. V mnoha případech tedy máte možnost, kterou z těchto funkcí chcete používat.

Mnoho databázových profesionálů dává přednost CAST() vzhledem k tomu, že je součástí standardu ANSI SQL, ostatní preferují CONVERT() kvůli zvláštní funkcionalitě, kterou implementace T-SQL nabízí (jako je například možnost poskytnout styl data).

V každém případě tento článek poskytuje příklady převodu mezi různými formáty data pomocí CAST() .

Syntaxe

Syntaxe vypadá takto:

CAST ( expression AS data_type [ ( length ) ] )

Tyto argumenty jsou definovány takto:

expression
Jakýkoli platný výraz.
data_type
Cílový datový typ. To zahrnuje xmlvelkýsql_variant . Datové typy aliasů nelze použít.
length
Volitelné celé číslo, které určuje délku cílového datového typu. Výchozí hodnota je 30 .

Příklad 1 – Odeslání SYSDATETIME() jako datum

V tomto příkladu vygenerujeme aktuální datum/čas pomocí SYSDATETIME() a přetypovat návratovou hodnotu jako datum datový typ.

Všimněte si, že SYSDATETIME() vygeneruje svou hodnotu jako datetime2(7) datový typ, takže jej převádíme z tohoto datového typu na jiný datový typ.

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

Výsledek:

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

Příklad 2 – Odeslání SYSDATETIME() jako smalldatetime

V tomto příkladu použijeme datum jako smalldatetime datový typ.

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

Výsledek:

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

Příklad 3 – Odeslání SYSDATETIME() jako datetimeoffset

V tomto příkladu přetypujeme datum jako datetimeoffset datový typ.

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

Výsledek:

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

Příklad 4 – Odeslání SYSDATETIME() jako času

Nejste omezeni na zobrazení komponenty data hodnoty. Můžete jej také odeslat jako čas datový typ, takže je vrácena pouze časová složka. Takhle:

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

Výsledek:

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

Příklad 5 – Odeslání SYSDATETIMEOFFSET() jako datum

Zde je příklad použití jiné funkce ke generování původní hodnoty data/času:

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

Výsledek:

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

Příklad 6 – Převod z databázového dotazu

Zde je příklad převodu data, které je načteno ze sloupce v WideWorldImporters ukázková databáze:

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

Výsledek:

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

Napsal jsem také příspěvek, který ukazuje, jak převádět mezi formáty data pomocí CONVERT() pomocí stejných příkladů jako výše.


  1. Získejte prvních n záznamů pro každou skupinu seskupených výsledků

  2. MySql:MyISAM vs. Inno DB!

  3. Jak vytvořit připojení k Postgres přes Node.js

  4. Správa databáze MySQL v cPanel pomocí PHPMyAdmin