Problém:
Chcete na serveru SQL Server zobrazit hodnotu data v jiném formátu.
Příklad:
Naše databáze obsahuje tabulku s názvem company
s údaji ve sloupcích id (primární klíč), název a počáteční_datum .
id | jméno | počáteční_datum |
---|---|---|
1 | Lisa Bank | 20. 1. 2019 |
2 | Úvěrový finanční institut | 2018-03-14 |
3 | Williams Holding | 28. 10. 2019 |
U každé společnosti převeďme její počáteční datum do nového formátu, 'RRRR/MM/DD', kde RRRR je 4místný rok, MM je 2místný měsíc a DD je 2místný den.
Řešení 1:
Použijeme CONVERT()
funkce. Zde je dotaz, který byste napsali:
SELECT CONVERT(NVARCHAR, start_date, 111 ) AS new_date FROM company;
Zde je výsledek:
jméno | počáteční_datum |
---|---|
Lisa Bank | 20. 1. 2019 |
Úvěrový finanční institut | 14. 3. 2018 |
Williams Holding | 28. 10. 2019 |
Diskuse:
Použijte CONVERT()
funkce pro změnu formátu data z daného sloupce nebo výrazu.
Tato funkce má tři argumenty:
- Nový datový typ (v našem příkladu NVARCHAR).
- Výraz nebo název sloupce obsahující datum k formátování (v našem příkladu
start_date
sloupec). - Volitelný kód stylu jako celé číslo. (V našem příkladu styl „111“ zobrazuje datum pomocí lomítek k oddělení částí.)
Níže uvedená tabulka uvádí nejoblíbenější kódy stylů data:
kód | popis |
---|---|
101 | 30. 11. 2019 |
102 | 30. 11. 2019 |
103 | 30/11/2019 |
104 | 30.11.2019 |
105 | 30-11-2019 |
110 | 30. 11. 2019 |
111 | 30. 11. 2019 |
Úplný seznam formátovacích stylů lze nalézt v dokumentaci T-SQL.
Výše uvedený dotaz změnil formát data Lisa Bank 2019-01-20 na řetězec obsahující datum „2019/01/20“.
Řešení 2:
V SQL Server 2012 a novějších můžete použít FORMAT()
funkce pro změnu formátu data/času. Pomocí níže uvedených znaků určíte požadovaný formát:
vzor | popis |
---|---|
dd | den v rozmezí 01-31 |
MM | měsíc v rozmezí 01-12 |
yy | 2místný rok |
yyyy | 4místný rok |
HH | hodina v rozsahu 00-23 |
mm | minuty v rozsahu 00-59 |
ss | sekundy v rozsahu 00-59 |
Zde je dotaz, který byste napsali pomocí FORMAT():
SELECT FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date FROM company;
Prvním argumentem je hodnota datetime/date/time k přeformátování. Druhým je řetězec obsahující vzor nového formátu. Tato funkce vrací datový typ NVARCHAR. Použijte FORMAT()
pokud pracujete na SQL Server 2012 nebo novějším a chcete převést data/časy na řetězce obsahující formátovaná data/časy.