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

6 způsobů, jak převést řetězec na hodnotu data/času na serveru SQL

Pokud potřebujete převést řetězec na hodnotu data/času na serveru SQL Server, máte několik možností. V tomto příspěvku nastíním šest funkcí T-SQL, které vám to umožňují.

Těchto šest funkcí je:

  • CAST()
  • CONVERT()
  • PARSE()
  • TRY_CAST()
  • TRY_CONVERT()
  • TRY_PARSE()

Níže je uveden příklad, jak můžete tyto funkce použít k převodu řetězce na datový typ datum/čas.

Funkce CAST()

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

SELECT CAST('20 Dec 2018' AS date) AS Result;

Výsledek:

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

Další příklady najdete v tématu Jak převést řetězec na datum/čas na serveru SQL pomocí CAST() .

Funkce CONVERT()

Zde provedeme stejnou konverzi jako v předchozím příkladu, ale s CONVERT() funkce. Jediný rozdíl je v syntaxi.

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

Výsledek:

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

Další příklady najdete v tématu Jak převést řetězec na datum/čas na serveru SQL pomocí CONVERT() .

Funkce PARSE()

V tomto příkladu přidám den v týdnu jako součást řetězce. Důvod, proč to dělám, je demonstrovat výhodu, kterou má tato funkce oproti ostatním. Pokud poskytnete datum v tomto formátu ostatním funkcím, zobrazí se chyba. Ale PARSE() funkce to zvládne:

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

Výsledek:

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

Další příklady najdete v tématu Jak převést řetězec na datum/čas na serveru SQL pomocí PARSE() .

Funkce TRY_CAST()

Můžete použít TRY_CAST() místo CAST() poskytnout hladší způsob řešení chyb. Při použití CAST() Pokud přetypování selže, vrátí chybu. Pokud však použijete TRY_CAST() místo toho vrátí NULL v takových případech.

Zde je příklad selhání obsazení:

SELECT TRY_CAST('Next month' AS date) AS Result;

Výsledek:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Pokud stejnou hodnotu poskytneme do CAST() místo toho se stane toto:

SELECT CAST('Next month' AS date) AS Result;

Výsledek:

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

Další příklady naleznete v části CAST vs TRY_CAST v SQL Server:Jaký je rozdíl?

Funkce TRY_CONVERT()

Můžete také použít TRY_CONVERT() místo CONVERT() pro lepší zpracování chyb. Pokud CONVERT() funkce selže, vrátí chybu. Ale pokud TRY_CONVERT() selže, vrátí NULL .

Zde je příklad selhání konverze:

SELECT TRY_CONVERT(date, 'Next month') AS Result;

Výsledek:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Pokud stejnou hodnotu poskytneme do CONVERT() místo toho se stane toto:

SELECT CONVERT(date, 'Next month') AS Result;

Výsledek:

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

Další příklady naleznete v části CONVERT vs TRY_CONVERT v SQL Server:Jaký je rozdíl?

Funkce TRY_PARSE()

Můžete také použít TRY_PARSE() místo PARSE() pro lepší zpracování chyb. Pokud PARSE() funkce selže, vrátí chybu. Ale pokud TRY_PARSE() selže, vrátí NULL .

Zde je příklad selhání konverze:

SELECT TRY_PARSE('Next month' AS date) AS Result;

Výsledek:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Pokud stejnou hodnotu poskytneme do PARSE() místo toho se stane toto:

SELECT PARSE('Next month' AS date) AS Result;

Výsledek:

Error converting string value 'Next month' into data type date using culture ''.

  1. Offline instalace MariaDB Cluster pro CentOS

  2. Jak DATE_SUB() funguje v MariaDB

  3. Jak vytvořit databázi v MySQL

  4. OMEZENÍ ZAHRANIČNÍHO KLÍČE SQL:Konečný, snadný průvodce pro nováčky