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 ''.