Když používáte SQL Server, můžete převést hodnotu data/času na řetězec pomocí CONVERT()
funkce. Tato funkce umožňuje převádět mezi různými datovými typy.
V tomto článku budeme převádět mezi různými datovými typy data/času na varchar
nebo nvarchar
řetězec.
Jednou z dobrých věcí na této funkci je to, že vám umožňuje určit styl, ve kterém bude datum vráceno. Můžete například určit, zda bude vráceno jako mm/dd/rrrr , rrrr.mm.dd , Po dd, yyyy atd. Můžete také určit, zda je vrácena složka času a jak je stylizován.
Syntaxe
Nejprve se podívejme, jak funguje oficiální syntaxe:
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 xml , velký a 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.
Základní příklad
V tomto příkladu deklarujeme proměnnou a přiřadíme hodnotu z GETDATE()
funkce. Potom vrátíme hodnotu a také ji převedeme na varchar
a vraťte to:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar, @date) AS Converted;
Výsledek:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
Výchozí délka vráceného datového typu je 30
, takže i když jsme zadali pouze varchar
, vrátí výsledek jako varchar(30)
.
V tomto příkladu jsme neposkytli třetí argument k označení stylu, ve kterém chceme, aby byl vrácen. Proto byl převeden pomocí výchozího stylu pro datetime a smalldatetime datové typy, což je 0
nebo 100
(více o stylech níže).
Určení stylu
Můžete použít třetí argument k určení stylu, který bude mít vrácená hodnota:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 102) AS Converted;
Výsledek:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:42:33.840 | 2018.06.07 | +-------------------------+-------------+
V tomto příkladu jsme zadali styl 102
, což je standard ANSI pro zobrazení data se čtyřmístnou složkou roku.
Chcete-li to změnit na formát ANSI s dvouciferným rokem, můžeme použít styl 2
:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 2) AS Converted;
Výsledek:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:44:52.433 | 18.06.07 | +-------------------------+-------------+
Můžete si prohlédnout další příklady na CONVERT() z data/času na příklady řetězců v SQL Server.