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

Jak změnit formát data a času v T-SQL

Problém:

Chcete změnit formát pole data nebo hodnoty v databázi SQL Server.

Příklad:

Naše databáze obsahuje tabulku s názvem Patient s údaji ve sloupcích Id , FirstName , LastName a RegistrationDate .

Id Jméno Příjmení Datum registrace
1 Jane Williams 20. 6. 2019
2 Gabriel Hnědá 2019-02-02
3 Lora Lidové 2016-11-05

Změňme formát data registrace každého pacienta. Nejprve uvedeme název dne v týdnu, poté měsíc, den a jméno a čtyřmístný rok (např. „Pátek, 27. prosince 2019“).

Řešení:

Ke změně formátu data v RegistrationDate použijeme funkci FORMAT(). sloupec.

SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy')
          AS FormattedRegistrationDate
FROM Patient;

Zde je výsledek dotazu:

Jméno Příjmení FormattedRegistrationDate
Jane Williams Čtvrtek, 20. června 2019
Gabriel Hnědá Sobota, 2. února 2019
Lora Lidové Sobota 5. listopadu 2016

Diskuse:

Pomocí funkce FORMAT() můžeme změnit způsob zobrazení daného data. Tato funkce má dva povinné argumenty a jeden volitelný argument. V našem příkladu jsme použili pouze dva povinné argumenty. První je datum, které může být ze sloupce datum/čas/datum a čas nebo jakýkoli výraz, který vrací datum nebo čas. (V našem příkladu používáme sloupec RegistrationDate .) Druhým argumentem je řetězec obsahující nový formát data. V našem příkladu jsme použili 'dddd, dd MMMM, yyyy' :

  • dddd – Název dne v týdnu.
  • d – Den v měsíci, od 1 do 31.
  • MMMM – Celý název měsíce.
  • yyyy – Čtyřmístný rok.

Níže uvedená tabulka uvádí další specifikátory formátu data/času:

specifier popis
d Den v rozmezí 1–31
dd Den v rozmezí 01-31
ddd Zkrácený název dne v týdnu
dddd Celý název dne v týdnu
M Měsíc od 1 do 12
MM Měsíc od 1. do 12.
MMM Zkrácený název měsíce
MMMM Celý název měsíce
y 2místný rok, od 0 do 99
yy Dvoumístný rok od 00 do 99
yyyy 4místný rok
g Éra (např. A.D.)
h Hodina od 1 do 12 (12hodinový formát)
hh Hodina od 01 do 12 (12 hodin)
H Hodina od 0 do 23 (24hodinový formát)
HH Hodina od 00 do 23 (24hodinový formát)
m minuta od 0 do 59
mm minuta od 00 do 59
s Druhá od 0 do 59
ss Druhá od 00 do 59
t První znak AM nebo PM (např. 9A, 5P)
tt AM nebo PM
z Posun hodin, bez úvodní nuly (např. +3)
zz Posun hodin s úvodní nulou (např. +03)

Další informace naleznete v dokumentaci společnosti Microsoft pro standardní formáty data a času a vlastní formáty.

Pokud byste chtěli toto datum naformátovat pro konkrétní jazyk a/nebo zemi, použijte třetí volitelný argument:kultura . Tento argument je řetězec obsahující kód kultury pro konkrétní oblast nebo zemi. (Kódy kultury se skládají z kódu jazyka, pomlčky a kódu země.) V níže uvedeném příkladu používáme kód kultury pro Německo, který kombinuje německý kód jazyka („de“) s kódem země pro Německo. ('DE'), tj. 'de-DE'. Výsledné datum je zobrazeno v němčině a naformátováno tak, jak by jej německé publikum očekávalo.

SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE')
          AS FormattedRegistrationDate
FROM Patient;

Zde je výsledek tohoto dotazu:

Jméno Příjmení Datum registrace
Jane Williams Donnerstag, 20. června 2019
Gabriel Hnědá Samstag, 2. února 2019
Lora Lidové Samstag, 5. listopadu 2016

  1. Funkce NEW_TIME() v Oracle

  2. Hodnoty sloupce identity serveru SQL začínají na 0 místo na 1

  3. Jedinečný klíč v Oracle s příklady

  4. Migrace databáze Oracle z AWS EC2 na AWS RDS, část 2