2010-09-21 104 views
2

我有一個日期參數(@rptMonth),用戶從日期選擇日曆中選擇。日期必須是該月的第一天。無論用戶選擇什麼,我都想將其轉換爲mm/01/yyyy。例如,我需要每月的第一天。因此,如果用戶選擇2010年6月22日,我需要將其轉換爲06/01/2010。所以在我的查詢中,它會像WHERE YEAR_MONTH = DATEADD(「m」,datediff(「m」,「1900-01-01」,@ RptMonth),「1900-01-01」),「mm/dd/yyyy「,但是當我嘗試這個時,我在','附近得到了不正確的語法。不知道這是否會起作用。同一個月的第一天

回答

5

更新:

select dateadd(month, datediff(month, 0, getdate()), 0) 

老年人:

試試這個:

declare @arbitraryDate datetime; 
set @arbitraryDate = getdate(); 
set @arbitraryDate = dateadd(dd, datediff(dd, 0, @arbitraryDate), 0) --strip time 
select dateadd(dd, -day(@arbitraryDate)+1,@arbitraryDate) --strip days 

或者這樣:

select cast(convert(varchar(6), getdate(), 112) + '01' as datetime) 
3

這也應該工作:

SELECT CAST(CAST(YEAR(@pInputDate) AS VARCHAR(4)) + 
      CAST(MONTH(@pInputDate) AS VARCHAR(2)) + '01' AS DATETIME) 
+0

我相信'2010/12/12'是文化依賴。雖然'20101212'不是。我不知道爲什麼我知道這一點。 – 2010-09-21 20:59:43

+1

**更新**。 'set dateformat ydm;選擇演員('2010/24/12'作爲日期時間)'你走了!歧義。但不管'dateformat'設置如何,這個查詢'select cast('20101224'as datetime)'會工作得很好。 – 2010-09-21 21:05:57

+0

您的查詢還允許輕鬆前往一個月。很有用!肯定+1。 – 2010-09-21 21:07:48