选择从月初到当前日期的记录

时间:2011-09-13 14:18:36

标签: sql-server-2005 select dateadd datepart

我正在尝试选择在当月开始和当天之间添加到数据库的记录 - 我或多或少知道如何从当天和特定时间段内获取记录 - 但是我怎么得到它从当前日历月开始呢?

5 个答案:

答案 0 :(得分:5)

DECLARE @sm DATETIME;
SET @sm = DATEADD(DAY, 1-DAY(GETDATE()), DATEDIFF(DAY, 0, GETDATE()));

SELECT columns 
    FROM dbo.foo 
    WHERE datetime_column >= @sm;

答案 1 :(得分:2)

WHERE YEAR([Date])=YEAR(GETDATE())
AND MONTH([Date])=MONTH(GETDATE())
AND DAY([Date])<=DAY(GETDATE())

答案 2 :(得分:2)

select *
from YourTable
where DateCol >= dateadd(month, datediff(month, 0, getdate()), 0)

答案 3 :(得分:0)

基本上你在这里做的是获得月份,追加'/ 01'然后追加年份。将其作为字符串转换为处理追加,然后将其转换为DateTime。

所以它比进行任何类型的日期数学更复杂,但我认为它是可读的。

DECLARE @firstOfMonth DATETIME
SET @firstOfMonth = CAST(CAST(DATEPART(mm, GetDate()) as varchar) + '/01/' + cast(DATEPART(yyyy, Getdate()) as varchar) as datetime)

WHERE DateToCheck BETWEEN @firstOfMonth and GetDate()

答案 4 :(得分:0)

WHERE DateToCheck > LAST_DAY(CURDATE()-INTERVAL 1 MONTH))

http://www.sqlfiddle.com/#!2/3d673/2/0