如何从当前时间戳中获取最后 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 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;
我正在尝试提取过去 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 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;