sql中列的日期过滤器

时间:2016-07-28 14:59:52

标签: sql-server

我有按日期过滤的查询,现在只需要执行它的那一刻起最后24小时,为此我使用下一个代码:

( DateDiff(HH, vw_public_task.complete_date, getdate()) < 25)

我的日期过滤器可以提供过去24小时的查询结果,但不依赖于我当前的小时数,但根据&#34; day 08:00am&#34; - &#34; day+1 08:00am&#34;在我执行它的任何时候?

例如,如果我现在执行我的查询,我想查看昨天08:00am到今天08:00am的日期结果。

2 个答案:

答案 0 :(得分:0)

您可以使用以下公式计算昨天上午8点:

-- Yesterday at 8 am.
SELECT
    DATEADD(HOUR, 8, CAST(CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS DATETIME)) AS Yesterday8AM
;

GetDate返回当前日期。最里面的date add减去一天。将此作为日期转换将删除时间戳。昨天午夜将这个投回到DateTime。现在我们正在处理DateTime,我们可以再次使用date add来增加8小时。

如果您使用的是SQL Server 2012或更高版本,请考虑使用本机函数DATETIME2FROMPARTS

答案 1 :(得分:-1)

使用日期()(How to part DATE and TIME from DATETIME in MySQL)。

( DateDiff(HH, vw_public_task.complete_date, Date(getdate())+8 ) < 25)