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

时间:2015-03-05 16:32:32

标签: sql sql-server tsql

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

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

上面的查询给了我一切,但我只想从当前时间开始。 这就是myDate在表格中的样子

 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

3 个答案:

答案 0 :(得分:14)

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

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

SQL Server DATEADD

答案 1 :(得分:3)

我认为问题在于:

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(天)

答案 2 :(得分:0)

假设您使用的是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;
相关问题