我有一个日期参数(@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“但是当我尝试这个时,我会在','附近得到不正确的语法。不知道这是否会起作用。
答案 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)