sql >> Databasteknik >  >> RDS >> Sqlserver

Anpassade formatsträngar för datum/tid som stöds av FORMAT() i SQL Server

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.


  1. Tio sätt att utöka funktionaliteten hos PostgreSQL

  2. Anrop till odefinierad funktion oci_connect, php_oci8_12c.dll, Windows 8.1, php5.6.6

  3. SQL Server AlwaysOn ( Availability Group ) Arkitektur och Steg för Steg Installation - 3 Manuell misslyckande över steg

  4. Hur aktiverar jag mysqlnd för php?