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

Jak převést řetězec na datum/čas na serveru SQL pomocí CONVERT()

V SQL Server můžete použít CONVERT() funkce pro převod výrazu jednoho datového typu na jiný. Pokud tedy potřebujete převést řetězec do formátu data/času, tato funkce vám může pomoci.

Tento článek obsahuje příklady, které demonstrují jeho použití.

Syntaxe

Syntaxe vypadá takto:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

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 .
style
Celočíselný výraz, který určuje způsob CONVERT() funkce přeloží výraz . Pro hodnotu stylu NULL je vrácena hodnota NULL. data_type určuje rozsah.

Příklad 1 – Převést na datový typ dat

V tomto příkladu převedeme řetězec na datum datový typ (určíme jej pomocí date jako první argument).

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

Výsledek:

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

Řetězec samozřejmě musí být ve stylu, který lze převést na zadaný datový typ, jinak se zobrazí chyba:

SELECT CONVERT(date, 'Homer') AS Result;

Výsledek:

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

Příklad 2 – Převod na datový typ datetime

V tomto příkladu převedeme na datetime datový typ:

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

Výsledek:

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

Můžete také určit čas:

SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;

Výsledek:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 14:00:00.000 |
+-------------------------+

Příklad 3 – Převod na datový typ datetime2

V tomto příkladu převedeme na datetime2 datový typ:

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

Výsledek:

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

Příklad 4 – Převod na datový typ datetimeoffset

V tomto příkladu převedeme na datetimeoffset datový typ:

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

Výsledek:

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

Příklad 5 – Převod na datový typ smalldatetime

V tomto příkladu převedeme na smalldatetime datový typ:

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

Výsledek:

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

Příklad 6 – Převod na časový typ dat

V tomto příkladu převedeme na čas datový typ:

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

Výsledek:

+----------+
| Result   |
|----------|
| 00:00:00 |
+----------+

V takovém případě jsme zadali datum, ale ne čas, takže se to vrátilo jako 00:00:00 . Zde je další příklad, kdy skutečně zadáváme čas:

SELECT CONVERT(time, '2pm') AS Result;

Výsledek:

+----------+
| Result   |
|----------|
| 14:00:00 |
+----------+

Pokud však přidáme datum, dostaneme chybu (na rozdíl od předchozího příkladu, kdy jsme převedli na datetime ):

SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;

Výsledek:

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

V tomto případě byste tedy museli převést na datetime nebo smalldatetime .

Příklad 7 – Vynechání data

Pokud při převodu na datum a čas vynecháte datum nebo smalldatetime datové typy, vrátí 1900-01-01 jako datum:

SELECT CONVERT(datetime, '2pm') AS Result;

Výsledek:

+-------------------------+
| Result                  |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+

Pokud se při pokusu o převod řetězce na datum zobrazí chyba, zkuste PARSE() místo toho funkci. Bude fungovat v některých případech, kdy CONVERT() ne.

Můžete se také podívat na CAST() funkce, což je standardní způsob převodu mezi datovými typy ANSI SQL. Zde je návod, jak převést řetězec na datum/čas pomocí CAST() .


  1. Jak „odhalit“ číslo v MySQL

  2. Sql:rozdíl mezi dvěma daty

  3. Jak připojit .db soubor s jiným .apk androidem

  4. Dvě SQL LEFT JOINS poskytují nesprávný výsledek