如何从当前时间戳中获取最后 24 小时?

How to get last 24 hours from current time-stamp?

我正在尝试提取过去 24 小时内的所有数据,但从当前时间开始。如果当前日期时间是 5/3 并且时间是 11:30 那么我想从 11:30 中提取最后 24 小时。日期字段的数据类型是 datetime,它只有日期和时间值,没有秒。这是我当前的查询

select Name, Location, myDate from myTable where myDate>= getdate()-24

上面的查询给了我一切,但我只想要从当前时间开始。 这是 myDate 在 table

中的样子
 2015-03-05 10:30:00.000
2015-03-05 11:00:00.000
2015-03-05 11:30:00.000
2015-03-05 12:00:00.000
2015-03-05 12:30:00.000
2015-03-05 13:00:00.000
2015-03-05 13:30:00.000
2015-03-05 14:00:00.000
2015-03-05 14:30:00.000

我认为问题在于:

select Name, Location, myDate from myTable where myDate>= getdate()-24

-24,因为这将是 -24 天

尝试:

select Name, Location, myDate from myTable where myDate>= getdate()-1

另一种方法是使用日期添加功能:

http://www.w3schools.com/sql/func_dateadd.asp

DATEADD(datepart,number,date)

在您的情况下,您可以:

    select Name, Location, myDate from myTable where myDate>= DATEPART (dd, -1, GETDATE())

我们在其中添加负一 dd(天)

为了更明确地表达您的意图,您可能需要这样编写您的查询:

 select Name, Location, myDate from myTable where myDate>= DATEADD(hh, -24, GETDATE())

SQL Server DATEADD

假设您使用的是 SQL Server 2012 或更高版本,您可以使用 ANSI 区间文字代替 dateadd():

select Name, Location, myDate from myTable
 where myDate>= getdate() - INTERVAL '24' HOUR;

如果你想成为真正的ANSI标准,你可以使用CURRENT_TIMESTAMP而不是getdate()the two are equivalent)。

select Name, Location, myDate from myTable
 where myDate >= CURRENT_TIMESTAMP - INTERVAL '24' HOUR;