Cet article fournit une référence pour les spécificateurs de format de date et d'heure personnalisés qui peuvent être utilisés lors du formatage des dates et/ou des heures à l'aide de FORMAT()
fonction dans SQL Server, ainsi que des exemples.
Vous pouvez combiner n'importe lequel de ces spécificateurs de format pour produire une chaîne de format personnalisée. Voir ci-dessous pour un exemple de code et une explication sur le fonctionnement des chaînes de format personnalisées.
Les exemples du tableau supposent un datetimeoffset valeur de 2080-05-01 23:09:08.1234567 +07:00
.
Formater la chaîne | Description | Exemple |
---|---|---|
d | Le jour du mois, de 1 à 31. | 1 |
dd | Le jour du mois, du 01 au 31. | 01 |
ddd | Le nom abrégé du jour de la semaine. | Mer |
dddd | Le nom complet du jour de la semaine. | Mercredi |
f | Les dixièmes de seconde dans une valeur de date et d'heure. | 1 |
ff | Les centièmes de seconde dans une valeur de date et d'heure. | 12 |
fff | Les millisecondes dans une valeur de date et d'heure. | 123 |
ffff | Les dix millièmes de seconde dans une valeur de date et d'heure. | 1234 |
fffff | Les cent millièmes de seconde dans une valeur de date et d'heure. | 12345 |
fffffff | Les millionièmes de seconde dans une valeur de date et d'heure. | 123456 |
fffffff | Les dix millionièmes de seconde dans une valeur de date et d'heure. | 1234567 |
F | Si différent de zéro, les dixièmes de seconde dans une valeur de date et d'heure. | 1 |
FF | Si différent de zéro, les centièmes de seconde dans une valeur de date et d'heure. | 12 |
FFF | Si différent de zéro, les millisecondes dans une valeur de date et d'heure. | 123 |
FFFF | Si différent de zéro, les dix millièmes de seconde dans une valeur de date et d'heure. | 1234 |
FFFFF | Si différent de zéro, les cent millièmes de seconde dans une valeur de date et d'heure. | 12345 |
FFFFFF | Si différent de zéro, les millionièmes de seconde dans une valeur de date et d'heure. | 123456 |
FFFFFFF | Si différent de zéro, les dix millionièmes de seconde dans une valeur de date et d'heure. | 1234567 |
g | La période ou l'ère. | A.D. |
gg | La période ou l'ère. | A.D. |
h | L'heure, en utilisant une horloge de 12 heures de 1 à 12. | 11 |
hh | L'heure, en utilisant une horloge de 12 heures de 01 à 12. | 11 |
H | L'heure, en utilisant une horloge de 24 heures de 0 à 23. | 23 |
HH | L'heure, en utilisant une horloge de 24 heures de 00 à 23. | 23 |
K | Informations sur le fuseau horaire. | +07:00 |
m | La minute, de 0 à 59. | 9 |
mm | La minute, de 00 à 59. | 09 |
M | Le mois, de 1 à 12. | 5 |
MM | Le mois, de 01 à 12. | 05 |
MMM | Le nom abrégé du mois. | Mai |
MMMM | Le nom complet du mois. | Mai |
s | La seconde, de 0 à 59. | 8 |
ss | La seconde, de 00 à 59. | 08 |
t | Le premier caractère de l'indicateur AM/PM. | P |
tt | L'indicateur AM/PM. | MP |
y | L'année, de 0 à 99. | 80 |
yy | L'année, de 00 à 99. | 80 |
yyy | L'année, avec un minimum de trois chiffres. | 2080 |
yyyy | L'année sous la forme d'un nombre à quatre chiffres. | 2080 |
yyyyy | L'année sous la forme d'un nombre à cinq chiffres. | 02080 |
z | Décalage des heures par rapport à UTC, sans zéros non significatifs. | +7 |
zz | Décalage des heures par rapport à UTC, avec un zéro non significatif pour une valeur à un chiffre. | +07 |
zzz | Heures et minutes décalées par rapport à UTC. | +07:00 |
: | Le séparateur de temps. | : |
/ | Le séparateur de date. | / |
"string" | Délimiteur de chaîne littérale. | chaîne |
% | Définit le caractère suivant comme spécificateur de format personnalisé. | |
\ | Le caractère d'échappement. |
Tout autre caractère est copié dans la chaîne de résultat sans modification.
Important : Lorsque vous utilisez une chaîne de format personnalisé à un seul caractère, vous devez la faire précéder du signe de pourcentage (%
). Alternativement, vous pouvez ajouter un espace. Si vous ne le faites pas, vous obtiendrez soit NULL, soit le spécificateur de format pourrait être interprété comme un spécificateur de format standard, et vous obtiendrez des résultats inattendus.
Que sont les chaînes de format personnalisées ?
Une chaîne de format personnalisée se compose d'un ou plusieurs spécificateurs de format personnalisés. Le tableau ci-dessus répertorie les spécificateurs de format personnalisés disponibles pour formater les valeurs de date et d'heure dans une chaîne.
Il existe également des chaînes de format de date et d'heure standard. Chacun d'eux est un alias pour une chaîne de format personnalisé. Les chaînes de format standard consistent en un seul spécificateur de format, elles sont donc plus rapides à utiliser (mais moins flexibles que les chaînes de format personnalisées).
Toute chaîne de format qui n'est pas une chaîne de format de date et d'heure standard est interprétée comme une chaîne de format de date et d'heure personnalisée.
Exemple d'utilisation
La façon dont les spécificateurs de format personnalisés fonctionnent est que vous pouvez les combiner pour former une chaîne de format personnalisée lors de l'utilisation de FORMAT()
une fonction. Cela détermine la façon dont le résultat est formaté.
Voici quelques exemples :
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';
Résultat :
+-------------+-----------------+------------------------+------------+------------+ | 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 | +-------------+-----------------+------------------------+------------+------------+
Cela permet donc une grande flexibilité dans la façon dont vous présentez vos dates et heures.
Voici un exemple d'utilisation d'une chaîne de format constituée d'un seul spécificateur de format.
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';
Résultat :
+------+------+--------+------+ | %d | %M | %K | %z | |------+------+--------+------| | 1 | 5 | +07:00 | +7 | +------+------+--------+------+
Comme mentionné, vous devez les faire précéder d'un signe de pourcentage pour éviter d'obtenir NULL et pour que le spécificateur de format ne soit pas interprété par inadvertance comme une chaîne de format standard.
Voici ce qui se passe si je supprime le signe de pourcentage de l'exemple précédent :
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';
Résultat :
+----------+-------+------+------+ | d | M | K | z | |----------+-------+------+------| | 5/1/2080 | May 1 | NULL | NULL | +----------+-------+------+------+
Nous obtenons un résultat complètement différent.