Den här artikeln ger en referens till de anpassade datum- och tidsformatspecifikationerna som kan användas när du formaterar datum och/eller tider med FORMAT()
funktion i SQL Server, tillsammans med exempel.
Du kan kombinera vilken som helst av dessa formatspecifikationer för att skapa en anpassad formatsträng. Se nedan för ett kodexempel och en förklaring om hur anpassade formatsträngar fungerar.
Exemplen i tabellen antar en datum- och tidsförskjutning värde på 2080-05-01 23:09:08.1234567 +07:00
.
Formatera sträng | Beskrivning | Exempel |
---|---|---|
d | Dagen i månaden, från 1 till 31. | 1 |
dd | Dagen i månaden, från 01 till 31. | 01 |
ddd | Veckodagens förkortade namn. | Ons |
dddd | Veckodagens fullständiga namn. | onsdag |
f | Tiondelar av en sekund i ett datum- och tidsvärde. | 1 |
ff | Hundradedelar av en sekund i ett datum- och tidsvärde. | 12 |
fff | Millisekunderna i ett datum- och tidsvärde. | 123 |
ffff | Tiotusendelar av en sekund i ett datum- och tidsvärde. | 1234 |
fffff | De hundra tusendelar av en sekund i ett datum- och tidsvärde. | 12345 |
fffffff | Miljondels sekund i ett datum- och tidsvärde. | 123456 |
fffffff | De tio miljondelar av en sekund i ett datum- och tidsvärde. | 1234567 |
F | Om det inte är noll, tiondels sekund i ett datum- och tidsvärde. | 1 |
FF | Om det inte är noll, hundradelar av en sekund i ett datum- och tidsvärde. | 12 |
FFF | Om det inte är noll, millisekunderna i ett datum- och tidsvärde. | 123 |
FFFF | Om det inte är noll, tio tusendelar av en sekund i ett datum- och tidsvärde. | 1234 |
FFFFF | Om det inte är noll, hundratusendels sekund i ett datum- och tidsvärde. | 12345 |
FFFFFF | Om det inte är noll, miljondels sekund i ett datum- och tidsvärde. | 123456 |
FFFFFFF | Om det inte är noll, tio miljondelar av en sekund i ett datum- och tidsvärde. | 1234567 |
g | Perioden eller eran. | A.D. |
gg | Perioden eller eran. | A.D. |
h | Timman, med en 12-timmarsklocka från 1 till 12. | 11 |
hh | Timman, med en 12-timmarsklocka från 01 till 12. | 11 |
H | Timman, med en 24-timmarsklocka från 0 till 23. | 23 |
HH | Timman, med en 24-timmarsklocka från 00 till 23. | 23 |
K | Tidszonsinformation. | +07:00 |
m | Minuten, från 0 till 59. | 9 |
mm | Minuten, från 00 till 59. | 09 |
M | Månaden, från 1 till 12. | 5 |
MM | Månaden, från 01 till 12. | 05 |
MMM | Månadens förkortade namn. | Maj |
MMMM | Månadens fullständiga namn. | Maj |
s | Den andra, från 0 till 59. | 8 |
ss | Den andra, från 00 till 59. | 08 |
t | Det första tecknet i AM/PM-beteckningen. | P |
tt | AM/PM-beteckningen. | PM |
y | Året, från 0 till 99. | 80 |
yy | Året, från 00 till 99. | 80 |
yyy | Årtalet, med minst tre siffror. | 2080 |
yyyy | Året som ett fyrsiffrigt tal. | 2080 |
yyyy | Året som ett femsiffrigt tal. | 02080 |
z | Timmar förskjutet från UTC, utan inledande nollor. | +7 |
zz | Timmar förskjutet från UTC, med en inledande nolla för ett ensiffrigt värde. | +07 |
zzz | Timmar och minuter förskjutna från UTC. | +07:00 |
: | Tidsseparatorn. | : |
/ | Datumavgränsaren. | / |
"string" | Literal strängavgränsare. | sträng |
% | Definierar följande tecken som en anpassad formatspecifikation. | |
\ | Escape-tecknet. |
Alla andra tecken kopieras till resultatsträngen oförändrade.
Viktigt: När du använder en anpassad formatsträng med ett tecken bör du sätta procenttecknet före den (%
). Alternativt kan du lägga till ett mellanslag. Om du inte gör detta får du antingen NULL eller så kan formatspecifikationen tolkas som en standardformatspecifikation, och du får oavsiktliga resultat.
Vad är anpassade formatsträngar?
En anpassad formatsträng består av en eller flera anpassade formatspecifikationer. Tabellen ovan listar de anpassade formatspecifikationerna som är tillgängliga för att formatera datum- och tidsvärden till en sträng.
Det finns också standardsträngar för datum- och tidsformat. Var och en av dessa är ett alias för en anpassad formatsträng. Standardformatsträngar består av en enda formatspecifikation, så de är snabbare att använda (men mindre flexibla än anpassade formatsträngar).
Alla formatsträngar som inte är en standardsträng för datum- och tidsformat tolkas som en anpassad datum- och tidsformatsträng.
Exempel på användning
Sättet som specificerar anpassade format fungerar är att du kan kombinera dem för att bilda en anpassad formatsträng när du använder FORMAT()
fungera. Detta avgör hur resultatet formateras.
Här är några exempel:
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 ger en stor flexibilitet i hur du presenterar dina datum och tider.
Här är ett exempel på hur du använder en formatsträng som består av en enda formatspecifikator.
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ämnts bör du sätta ett procenttecken på dessa för att undvika att få NULL och så att formatspecifikationen inte av misstag tolkas som en standardformatsträng.
Så här händer om jag tar bort procenttecknet från föregående exempel:
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 ett helt annat resultat.