我有一个选择,我需要限制最后两天的数据。所以今天是2016年8月24日所以我需要获取2016年8月24日,2016年8月23日和2016年8月22日的数据。我该怎么做?我想我应该使用DATEADD函数或类似的东西。它需要动态完成。
我需要得到这样的东西:
SELECT * FROM TABLE_NAME WHERE
DATE = '2016-08-22'
日期必须每天更新
答案 0 :(得分:5)
DateAdd,完全
SELECT * FROM TABLE_NAME
WHERE DATE BETWEEN dateadd(d,-2,cast(getDate() as date)) AND cast(getDate() as date)
答案 1 :(得分:2)
SELECT *
FROM TABLE_NAME
WHERE cast(DATE as date) BETWEEN cast(DATEADD(D, -2, GETDATE()) as date) AND cast(GETDATE() as date)
答案 2 :(得分:1)
SELECT * FROM TABLE_NAME WHERE
cast(DATE as date) >= cast(GETDATE()-2 as date)
或 - 限制未来日期
SELECT * FROM TABLE_NAME
WHERE
cast(DATE as date) in (cast(GETDATE()-2 as date),cast(GETDATE()-1 as date), cast(GETDATE() as date))
使用GETDATE()
功能
答案 3 :(得分:0)
SELECT * FROM TABLE_NAME WHERE
DATE >=cast(getdate()-2 as date)--so this will be rounded off to midnight and it is sargable
答案 4 :(得分:0)
如果此表中有未来日期,您可以使用此
select * from table_name
where date <= getdate()
and date >= dateadd(day,-2,getdate())
答案 5 :(得分:0)
首先,您必须通过将其转换为浮动然后转换为绝对日期,然后将其转换为小日期时间。然后使用dateadd从今天的绝对日期开始减去2天。
SELECT * FROM
TABLE_NAME
WHERE
DATE >= (SELECT DATEADD(dd,-2,CAST(FLOOR(CAST(GETDATE() as FLOAT)) as SMALLDATETIME)))