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_datesloupec). - 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.