1

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

4

5 回答 5

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

SELECT columns 
    FROM dbo.foo 
    WHERE datetime_column >= @sm;
于 2011-09-13T14:24:33.857 回答
2
WHERE YEAR([Date])=YEAR(GETDATE())
AND MONTH([Date])=MONTH(GETDATE())
AND DAY([Date])<=DAY(GETDATE())
于 2011-09-13T14:25:44.883 回答
2
select *
from YourTable
where DateCol >= dateadd(month, datediff(month, 0, getdate()), 0)
于 2011-09-13T15:11:22.730 回答
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()
于 2011-09-13T14:25:38.773 回答
0
WHERE DateToCheck > LAST_DAY(CURDATE()-INTERVAL 1 MONTH))

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

于 2013-07-24T16:15:33.120 回答