我使用的是SQL Server 2014,我需要在SQL查询中添加一行代码,该代码将只过滤提取到StayDate
(数据库中的一列)为greater than or equal to
或1st day of the current month
的记录中的数据。
换句话说,我需要的代码行如下:
WHERE StayDate >= '1st Day of Current Month'
注:StayDate
采用datetime
格式(例如:2015-12-18 00:00:00.000)
使用EOMONTH
获取当月的第一天
WHERE StayDate >= Dateadd(dd, 1, Eomonth(Getdate(), -1))
SQL Server 2012及以上
WHERE StayDate >= DATEADD(DAY, 1, EOMONTH(GETDATE(), -1))
SQL Server 2012 之前
WHERE StayDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
您可以尝试以下方法:
declare @t datetime = '2016-02-28'
select DATEADD(D, -DATEPART(d, @t) + 1, @t)
所以在你的情况下:
WHERE StayDate >= DATEADD(D, -DATEPART(d, GETDATE()) + 1, GETDATE())
StayDate >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')
另一个选项;由于CCD_ 7在当月的第一天或之后(大于或等于)相当于在当月搜索CCD_
where datepart(mm, staydate) = datepart(mm, getdate())
and datepart(yyyy, staydate) = datepart(yyyy, getdate())