DECLARE @day CHAR(2)
SET @day = DATEPART(DAY, GETDATE())
PRINT @day
Si aujourd'hui était le 9 décembre, ce qui précède afficherait "9".
Je veux imprimer "09". Comment puis-je faire cela?
Tapotez-le avec 00 et prenez à droite 2:
DECLARE @day CHAR(2)
SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)
print @day
Utilisez les styles de date SQL Server pour pré-formater vos valeurs de date.
SELECT
CONVERT(varchar(2), GETDATE(), 101) AS monthLeadingZero -- Date Style 101 = mm/dd/yyyy
,CONVERT(varchar(2), GETDATE(), 103) AS dayLeadingZero -- Date Style 103 = dd/mm/yyyy
Pour SQL Server 2012 et versions supérieures, avec des zéros non significatifs:
SELECT FORMAT(GETDATE(),'MM')
sans pour autant:
SELECT MONTH(GETDATE())
Essaye ça :
SELECT CONVERT(varchar(2), GETDATE(), 101)
Leader 0 jour
SELECT FORMAT(GetDate(), 'dd')
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())
Bien plus beau, dit-il après avoir retiré la langue de la joue.
Habituellement, lorsque vous devez commencer à faire ce genre de chose en SQL, vous devez basculer de can I à can I.
SELECT RIGHT('0'
+ CONVERT(VARCHAR(2), Month( column_name )), 2)
FROM table
C'est une approche générique pour tout rembourrage à gauche. Le concept est d'utiliser REPLICATE pour créer une version qui n'est autre que la valeur complétée. Puis concaténez-le avec la valeur réelle, en utilisant un appel isnull/coalesce si les données sont NULLable. Vous avez maintenant une chaîne qui double la taille cible pour atteindre exactement la longueur cible ou entre les deux. Maintenant, il suffit de vous séparer des N caractères les plus à droite et vous avez une chaîne rembourrée à gauche.
SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day
La fonction CONVERT propose différentes méthodes pour obtenir des dates préformatées. Le format 103 spécifie dd
, ce qui signifie que le zéro n'est pas majuscule; il suffit donc de découper les 2 premiers caractères.
SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day