同月的第一天

时间:2010-09-21 20:37:47

标签: sql ssrs-2008

我有一个日期参数(@rptMonth),由用户从日期选择器日历中选择。日期必须是该月的第一天。无论用户选择什么,我都希望将其转换为mm / 01 / yyyy。例如 - 我需要一个月的第一天。因此,如果用户选择06/22/2010,我需要将其转换为06/01/2010。所以在我的查询中,它将类似于WHERE YEAR_MONTH = DATEADD(“m”,datediff(“m”,“1900-01-01”,@ RptMonth),“1900-01-01”),“mm / dd / yyyy“但是当我尝试这个时,我会在','附近得到不正确的语法。不知道这是否会起作用。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:3)

这也应该有效:

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