2014-05-23 89 views
-1

可以簡化此查詢(MSSQL)嗎?從日期開始的月份和日期

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

我想要一個日期的月份和日期,但如果月份/日期只有一個數字,則總是使用前導零。在這個日期2014-05-02我只想要05-02。我能做到這一點與此查詢,但我不知道是否有一個簡單的方法...

+0

看來這類似的問題已經http://stackoverflow.com/a/13804170/1692632 – Darka

+0

我想你確實有一個'DATE'列,而不是'CHAR'列? – Turophile

+0

是的,這是'日期'欄。 – PJLG

回答

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

結果:

05-23 
+0

謝謝@ t.clausen.dk。這是我所需要的。 – PJLG

0

請嘗試:

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

對於例如,

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

如果他有'2014-5-4'怎麼辦? – Darka

+0

@Darka,該查詢用於轉換日期時間字段。如果該字段是字符串,則轉換爲日期時間。 – TechDo

+0

yeap,現在我看@TechDo。只是愚蠢的問題,它'CONVERT'與某種格式有關?我的意思是,可以認爲服務器會認爲2是月,5是日? – Darka

0

試試這個。 ..

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

OR

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

都返回相同的結果如下

RESULT: 05-23 
0
我喜歡使用的格式

如果你有一個字符串:

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

如果你有一個日期:

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

這可以真正幫助您。

DECLARE @A DATETIME = GETDATE() 

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

enter image description here

相關問題