web-dev-qa-db-fra.com

Obtenez 2 chiffres pour le mois

J'ai une colonne entière "Mois" J'aimerais obtenir un nombre à 2 chiffres pour le mois.

C’est ce que j’ai essayé: DATEPART (mm, @Date)

Il retourne un chiffre pour les mois de janvier à septembre J'utilise SQL Server 2008

Quelqu'un a une suggestion?

45
Adam

il y a différentes façons de le faire 

  • En utilisant RTRIM et en spécifiant range:

comme 

SELECT RIGHT('0' + RTRIM(MONTH('12-31-2012')), 2); 
  • Utiliser Substring pour extraire simplement la partie month après avoir converti la date en texte

comme

SELECT SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)

voir Fiddle

Il y a peut-être d'autres façons de l'obtenir.

67
Ankit Suhail

Une fonction

FORMAT(date,'MM') 

fera le travail avec deux chiffres.

53
user3829053

Pinal Dave a publié un article dans Nice avec quelques exemples sur la manière de ajouter des 0 à la fin des nombres SQL

L’une des méthodes consiste à utiliser la fonction RIGHT, qui donnerait à l’instruction un aspect semblable à celui-ci:

SELECT RIGHT('00' + CAST(DATEPART(mm, @date) AS varchar(2)), 2)
13
SchmitzIT

Une autre astuce simple:

SELECT CONVERT(char(2), cast('2015-01-01' as datetime), 101) -- month with 2 digits
SELECT CONVERT(char(6), cast('2015-01-01' as datetime), 112) -- year (yyyy) and month (mm)

Les sorties:

01
201501
6
Mário Meyrelles

Alternative à DATEPART

SELECT LEFT(CONVERT(CHAR(20), GETDATE(), 101), 2)
3
John Woo

Tout simplement peut être utilisé:

SELECT RIGHT('0' + CAST(MONTH(@Date) AS NVARCHAR(2)), 2)
2
Elias Hossain

ajoutez 0 avant en vérifiant si la valeur se situe entre 1 et 9 en la convertissant d'abord en varchar

select case when DATEPART(month, getdate()) between 1 and 9 
then '0' else '' end + cast(DATEPART(month, getdate()) as varchar(2))
2
Saksham

Essayer:

select right ('0'+convert(nvarchar(2), DATEPART(mm, getdate())),2 )
1
TechDo

CONVERT (char (2), getdate (), 101)

1
Vinay Mishra

Ma façon de le faire est:

right('0'+right(datepart(month,[StartDate]),2),2)

La raison de la fonction "droite" interne est d'empêcher SQL de le faire en tant qu'addition mathématique - ce qui nous laissera à nouveau avec un chiffre.

0
Offer

Pour moi, la solution la plus rapide était

DATE_FORMAT(CURDATE(),'%m')
0
Angelo Canepa