2014-05-23 4 views
-1

Il est possible de simplifier cette requête (MSSQL)?Obtenir le mois et le jour à partir d'une date

SELECT RIGHT(STR(MONTH('2014-05-02'))+100,2) + '-' 
+ RIGHT(STR(DAY('2014-05-02'))+100,2) 

Je souhaite un mois et un jour à partir d'une date, mais toujours avec des zéros en tête si un seul chiffre est indiqué dans le mois/jour. En cette date 2014-05-02 je veux seulement 05-02. Je peux le faire avec cette requête, mais je ne sais pas s'il y a une façon simple ...

+0

semble que cette question similaire était déjà http://stackoverflow.com/a/13804170/1692632 – Darka

+0

Je suppose que vous avez réellement une colonne 'Date', pas une colonne' CHAR'? – Turophile

+0

Oui, c'est une colonne 'date'. – PJLG

Répondre

1
SELECT CONVERT(CHAR(5), GETDATE(), 10) 

Résultat:

05-23 
+0

Merci @ t.clausen.dk. C'est tout ce dont j'avais besoin. – PJLG

0

S'il vous plaît essayer:

select RIGHT(CONVERT(nvarchar(10), GETDATE(), 126), 5) 

Pour l'exemple,

select RIGHT(CONVERT(nvarchar(10),CONVERT(DATETIME, '2014-5-2'), 126), 5) 
+0

et s'il a '2014-5-4'? – Darka

+0

@Darka, La requête est destinée à convertir un champ date-heure. Si le champ est une chaîne, convertissez-le en datetime. – TechDo

+0

yeap, maintenant je vois @TechDo. Juste question stupide, il 'CONVERT' est lié à un certain format? Je veux dire, peut-être que le serveur pensera que 2 est le mois et 5 est le jour? – Darka

0

Essayez ceci. ..

SELECT LEFT(CONVERT(VARCHAR(10), GETDATE(), 110),5) 

OU

SELECT LEFT(CONVERT(VARCHAR(8), GETDATE(), 10),5) 

Les deux renvoient le même résultat que suit

RESULT: 05-23 
0

J'aime utiliser le format.

Si vous avez une chaîne:

select format(convert(date, '2014-05-23', 126),'MM-dd'); 

Si vous avez une date:

select format(GetDate(),'MM-dd'); 
0

Cela pourrait vraiment vous aider.

DECLARE @A DATETIME = GETDATE() 

SELECT CONVERT(VARCHAR(5),@A,110) 

enter image description here

Questions connexes