SQL Server:在两天之前获得""日期

时间:2016-08-24 08:29:10

标签: sql sql-server

我有一个选择,我需要限制最后两天的数据。所以今天是2016年8月24日所以我需要获取2016年8月24日,2016年8月23日和2016年8月22日的数据。我该怎么做?我想我应该使用DATEADD函数或类似的东西。它需要动态完成。

我需要得到这样的东西:

SELECT * FROM TABLE_NAME WHERE
DATE = '2016-08-22'

日期必须每天更新

6 个答案:

答案 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)))