过去30天似乎已多次回答这个问题。但似乎不是我需要的。
例如,如果今天是2012年7月10日。我想要提取所有6月份的数据。我需要在每个月开始几天后运行此查询
答案 0 :(得分:3)
当然有更好的方法可以做到这一点,但有一种方法是:
DECLARE @Date DATETIME
SET @Date = '20120710'
SELECT *
FROM YourTable
WHERE YourDateColumn >= CONVERT(VARCHAR(6),DATEADD(MONTH,-1,@Date),112)+'01'
AND YourDateColumn < CONVERT(VARCHAR(6),@Date,112)+'01')
答案 1 :(得分:0)
- 上个月的第一天
select DateAdd(Month, DateDiff(Month, 0, GetDate())-1,0)
- 上个月的最后一天
Select DateAdd(day,-1,DateAdd(Month,1,DateAdd(Month,
DateDiff(Month, 0,GETDATE())-1,0)))
请将GETDATE()替换为日期列
答案 2 :(得分:-1)
啊,在这种情况下你需要像:
SELECT *
FROM
reporting_table_name_goes_here
WHERE
DATEPART(month, YourDateColumn) = DATEPART(month, DATEADD(month, -1, getdate()))
AND DATEPART(year, YourDateColumn) = DATEPART(year, DATEADD(month, -1, getdate()))
查看MSDN了解详情。