我正在尝试提取最近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
答案 0 :(得分:14)
为了更明确地表达您的意图,您可能需要像这样编写查询:
select Name, Location, myDate from myTable where myDate>= DATEADD(hh, -24, GETDATE())
答案 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;