sql >> Database teknologi >  >> RDS >> Database

Sådan ændres dato- og tidsformater i T-SQL

Problem:

Du vil gerne ændre formatet på et datofelt eller en værdi i en SQL Server-database.

Eksempel:

Vores database har en tabel med navnet Patient med data i kolonnerne Id , FirstName , LastName og RegistrationDate .

Id Fornavn Efternavn Registreringsdato
1 Jane Williams 2019-06-20
2 Gabriel Brun 2019-02-02
3 Lora Folke 2016-11-05

Lad os ændre formatet for hver patients registreringsdato. Vi sætter navnet på ugedagen først efterfulgt af månedens dag og navn og et 4-cifret årstal (f.eks. "fredag ​​den 27. december 2019").

Løsning:

Vi bruger funktionen FORMAT() til at ændre formatet på datoen i RegistrationDate kolonne.

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

Her er resultatet af forespørgslen:

Fornavn Efternavn Formateret registreringsdato
Jane Williams Torsdag den 20. juni 2019
Gabriel Brun Lørdag den 2. februar 2019
Lora Folke Lørdag den 5. november 2016

Diskussion:

Vi kan ændre, hvordan en given dato vises med FORMAT()-funktionen. Denne funktion tager to obligatoriske argumenter og et valgfrit argument. I vores eksempel brugte vi kun de to obligatoriske argumenter. Den første er en dato, som kan være fra en dato/tid/datotid-kolonne eller ethvert udtryk, der returnerer en dato eller et klokkeslæt. (I vores eksempel bruger vi kolonnen RegistrationDate .) Det andet argument er en streng, der indeholder det nye datoformat. I vores eksempel brugte vi 'dddd, dd MMMM, åååå' :

  • dddd – Navnet på ugedagen.
  • d – Dagen i måneden, fra 1 til 31.
  • MMMM – Månedens fulde navn.
  • åååå – Det firecifrede årstal.

Tabellen nedenfor viser flere dato-/tidsformatspecifikationer:

specificator beskrivelse
d Dag i intervallet 1-31
dd Dag i intervallet 01-31
ddd Ugedagens forkortede navn
dddd Ugedagens fulde navn
M Måned fra 1 til 12
MM Måned fra 01 til 12
MMM Månedens forkortede navn
MMMM Månedens fulde navn
y 2-cifret år, fra 0 til 99
åå 2-cifret år fra 00 til 99
åååå 4-cifret årstal
g Era (f.eks. A.D.)
h Time fra 1 til 12 (12-timers ur)
hh Time fra 01 til 12 (12-timers ur)
H Time fra 0 til 23 (24-timers ur)
HH Time fra 00 til 23 (24-timers ur)
m Minut fra 0 til 59
mm Minut fra 00 til 59
s Sekund fra 0 til 59
ss Sekund fra 00 til 59
t Første tegn i AM eller PM (f.eks. 9A, 5P)
tt AM eller PM
z Timeforskydning uden indledende nul (f.eks. +3)
zz Timeforskydning med indledende nul (f.eks. +03)

Du kan lære mere i Microsoft-dokumentationen for standard dato- og tidsformater og brugerdefinerede formater.

Hvis du gerne vil formatere denne dato for et specifikt sprog og/eller land, skal du bruge det tredje valgfrie argument:kultur . Dette argument er en streng, der indeholder kulturkoden for en bestemt region eller land. (Kulturkoder består af en sprogkode, en bindestreg og en landekode.) I eksemplet nedenfor bruger vi kulturkoden for Tyskland, som kombinerer den tyske sprogkode ('de') med landekoden for Tyskland ('DE'), dvs. 'de-DE'. Den resulterende dato vises på tysk og formateret som et tysk publikum ville forvente at se det.

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

Her er resultatet af denne forespørgsel:

Fornavn Efternavn Registreringsdato
Jane Williams Donnerstag, 20. juni, 2019
Gabriel Brun Samstag, 2. februar 2019
Lora Folke Samstag, 5. november 2016

  1. Vælg og rediger lodrette blokke i SQL Server Management Studio ( SSMS) - SQL Server / TSQL selvstudium del 9

  2. EKSPORTER SOM INDSÆT UDTALELSER:Men i SQL Plus tilsidesætter linjen 2500 tegn!

  3. Guide til designdatabase til quiz i MySQL

  4. Generer SQL Opret scripts til eksisterende tabeller med Query