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