Denne artikel giver en reference til de brugerdefinerede dato- og klokkeslætformatspecifikationer, der kan bruges ved formatering af datoer og/eller klokkeslæt ved hjælp af FORMAT()
funktion i SQL Server, sammen med eksempler.
Du kan kombinere enhver af disse formatspecifikationer for at producere en tilpasset formatstreng. Se nedenfor for et kodeeksempel og en forklaring på, hvordan tilpassede formatstrenge fungerer.
Eksemplerne i tabellen antager en dato-tidsforskydning værdi af 2080-05-01 23:09:08.1234567 +07:00
.
Format streng | Beskrivelse | Eksempel |
---|---|---|
d | Dagen i måneden fra 1 til 31. | 1 |
dd | Dagen i måneden, fra 01 til 31. | 01 |
ddd | Ugedagens forkortede navn. | Ons |
dddd | Ugedagens fulde navn. | onsdag |
f | Tiendedelene af et sekund i en dato- og tidsværdi. | 1 |
ff | Hundrededele af et sekund i en dato- og tidsværdi. | 12 |
fff | Millisekunderne i en dato- og tidsværdi. | 123 |
ffff | Titusindedele af et sekund i en dato- og tidsværdi. | 1234 |
fffff | De hundrede tusindedele af et sekund i en dato- og tidsværdi. | 12345 |
fffffff | Milliontedele af et sekund i en dato- og tidsværdi. | 123456 |
fffffff | De ti milliontedele af et sekund i en dato- og tidsværdi. | 1234567 |
F | Hvis ikke-nul, tiendedele af et sekund i en dato- og tidsværdi. | 1 |
FF | Hvis ikke-nul, hundrededele af et sekund i en dato- og tidsværdi. | 12 |
FFF | Hvis ikke-nul, millisekunderne i en dato- og tidsværdi. | 123 |
FFFF | Hvis ikke-nul, ti tusindedele af et sekund i en dato- og tidsværdi. | 1234 |
FFFFF | Hvis ikke-nul, hundrede tusindedele af et sekund i en dato- og tidsværdi. | 12345 |
FFFFFF | Hvis ikke-nul, milliontedele af et sekund i en dato- og tidsværdi. | 123456 |
FFFFFFF | Hvis ikke-nul, de ti milliontedele af et sekund i en dato- og tidsværdi. | 1234567 |
g | Perioden eller æraen. | A.D. |
gg | Perioden eller æraen. | A.D. |
h | Timen med et 12-timers ur fra 1 til 12. | 11 |
hh | Timen med et 12-timers ur fra 01 til 12. | 11 |
H | Timen med et 24-timers ur fra 0 til 23. | 23 |
HH | Timen med et 24-timers ur fra 00 til 23. | 23 |
K | Tidszoneoplysninger. | +07:00 |
m | Minuttet, fra 0 til 59. | 9 |
mm | Minuttet, fra 00 til 59. | 09 |
M | Måneden fra 1 til 12. | 5 |
MM | Måneden fra 01 til 12. | 05 |
MMM | Månedens forkortede navn. | Maj |
MMMM | Månedens fulde navn. | Maj |
s | Den anden, fra 0 til 59. | 8 |
ss | Den anden, fra 00 til 59. | 08 |
t | Det første tegn i AM/PM-betegnelsen. | P |
tt | AM/PM-betegnelsen. | PM |
y | Året, fra 0 til 99. | 80 |
yy | Året, fra 00 til 99. | 80 |
yyy | Året, med minimum tre cifre. | 2080 |
yyyy | Året som et firecifret tal. | 2080 |
yyyy | Året som et femcifret tal. | 02080 |
z | Timer forskudt fra UTC, uden foranstillede nuller. | +7 |
zz | Timer forskudt fra UTC, med et indledende nul for en enkeltcifret værdi. | +07 |
zzz | Timer og minutter forskudt fra UTC. | +07:00 |
: | Tidsseparatoren. | : |
/ | Datoseparatoren. | / |
"string" | Literal streng-adskiller. | streng |
% | Definerer følgende tegn som en brugerdefineret formatspecifikation. | |
\ | Escape-karakteren. |
Ethvert andet tegn kopieres til resultatstrengen uændret.
Vigtigt: Når du bruger en streng med et brugerdefineret format med et enkelt tegn, skal du sætte procenttegnet foran den (%
). Alternativt kan du tilføje et mellemrum. Hvis du ikke gør dette, får du enten NULL, eller også kan formatspecifikationen fortolkes som en standardformatspecifikation, og du vil få utilsigtede resultater.
Hvad er strenge til tilpasset format?
En brugerdefineret formatstreng består af en eller flere brugerdefinerede formatspecifikationer. Ovenstående tabel viser de brugerdefinerede formatspecifikationer, der er tilgængelige for formatering af dato- og tidsværdier til en streng.
Der er også standard dato- og tidsformatstrenge. Hver af disse er et alias for en tilpasset formatstreng. Standardformatstrenge består af en enkelt formatspecifikation, så de er hurtigere at bruge (men mindre fleksible end tilpassede formatstrenge).
Enhver formatstreng, der ikke er en standard dato- og tidsformatstreng, fortolkes som en tilpasset dato- og tidsformatstreng.
Eksempel på brug
Måden brugerdefinerede formatspecifikationer fungerer på er, at du kan kombinere dem sammen for at danne en brugerdefineret formatstreng, når du bruger FORMAT()
fungere. Dette bestemmer, hvordan resultatet formateres.
Her er nogle eksempler:
DECLARE @date datetimeoffset; SET @date = '2080-05-01 23:09:08.1234567 +07:00'; SELECT FORMAT(@date, 'd, MMM yy') AS 'd, MMM yy', FORMAT(@date, 'dd, MMMM yyyy') AS 'dd, MMMM yyyy', FORMAT(@date, 'dddd, MMM dd yyyy') AS 'dddd, MMM dd yyyy', FORMAT(@date, 'hh:mm:ss') AS 'hh:mm:ss', FORMAT(@date, 'hh:mm tt') AS 'hh:mm tt';
Resultat:
+-------------+-----------------+------------------------+------------+------------+ | d, MMM yy | dd, MMMM yyyy | dddd, MMM dd yyyy | hh:mm:ss | hh:mm tt | |-------------+-----------------+------------------------+------------+------------| | 1, May 80 | 01, May 2080 | Wednesday, May 01 2080 | 11:09:08 | 11:09 PM | +-------------+-----------------+------------------------+------------+------------+
Så det giver mulighed for en masse fleksibilitet i, hvordan du præsenterer dine datoer og tidspunkter.
Her er et eksempel på brug af en formatstreng, der består af en enkelt formatspecifikation.
DECLARE @date datetimeoffset; SET @date = '2080-05-01 23:09:08.1234567 +07:00'; SELECT FORMAT(@date, '%d') AS '%d', FORMAT(@date, '%M') AS '%M', FORMAT(@date, '%K') AS '%K', FORMAT(@date, '%z') AS '%z';
Resultat:
+------+------+--------+------+ | %d | %M | %K | %z | |------+------+--------+------| | 1 | 5 | +07:00 | +7 | +------+------+--------+------+
Som nævnt bør du forankre disse med et procenttegn for at undgå at få NULL og for at formatspecifikationen ikke utilsigtet bliver fortolket som en standardformatstreng.
Her er hvad der sker, hvis jeg fjerner procenttegnet fra det forrige eksempel:
DECLARE @date datetimeoffset; SET @date = '2080-05-01 23:09:08.1234567 +07:00'; SELECT FORMAT(@date, 'd') AS 'd', FORMAT(@date, 'M') AS 'M', FORMAT(@date, 'K') AS 'K', FORMAT(@date, 'z') AS 'z';
Resultat:
+----------+-------+------+------+ | d | M | K | z | |----------+-------+------+------| | 5/1/2080 | May 1 | NULL | NULL | +----------+-------+------+------+
Vi får et helt andet resultat.