sql >> Databáze >  >> RDS >> Database

Jak formátovat datum v T-SQL

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:

  1. Nový datový typ (v našem příkladu NVARCHAR).
  2. Výraz nebo název sloupce obsahující datum k formátování (v našem příkladu start_date sloupec).
  3. 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.


  1. Převést „čas“ na „datetime2“ v SQL Server (příklady T-SQL)

  2. Jak získat vygenerované klíče z dávkového vložení JDBC v Oracle?

  3. ORA-01034:ORACLE není k dispozici ORA-27101:sféra sdílené paměti neexistuje

  4. Co hledat, pokud vaše replikace MySQL zaostává