我是SQL的新手,时间函数与mySQL不同,所以我很难找到一个带有USEFUL时间戳查询的好网站引用。
我无法找到在SQL中执行此查询的正确方法:
Id Timestamp
-----------------------------------
1145744 2012-10-10 18:15:11.500
1145743 2012-10-10 18:15:11.313
1145742 2012-10-10 18:15:11.313
1145741 2012-10-10 18:15:11.253
1145740 2012-10-10 18:15:11.190
1145739 2012-10-10 18:15:11.190
1145738 2012-10-10 18:15:11.127
1145737 2012-10-10 18:15:11.067
1145736 2012-10-10 18:15:11.063
1145735 2012-10-10 18:15:10.940
1145734 2012-10-10 18:15:10.817
SELECT * from table WHERE Timestamp ... RANGE
我需要2个时间戳的范围,所以我可以通过以下参数选择行:
是否有一个功能可以输入2个时间戳并获得范围?或者这是我需要的功能组合?
任何好的网站引用都会有很大的价值。 MSDN网站没有帮助我隔离正确的方法。我一直在寻找大约一个小时试图从今天下午1:30到下午1:30获得最后一天。
答案 0 :(得分:4)
您可以使用< code> DATEPART< / code>得到:
second,
minute,
hour,
day,
week,
month,
year
使用where
条件获得所需的范围。
答案 1 :(得分:0)
我很难搞清楚你真正想要的东西。以下是基于您目前评论的一些示例:
10-11,或1-5
SELECT * from table WHERE Timestamp >= '20121011 10:00'
and Timestamp < '20121011 11:00'
SELECT * from table WHERE Timestamp >= '20121011 01:00'
and Timestamp < '20121011 05:00'
或者,如果您需要“今天”自动更改,那么
SELECT * from table WHERE Timestamp >= DateAdd(Hour,10,CAST(GetDate() as Date))
and Timestamp < DateAdd(Hour,11,CAST(GetDate() as Date))
昨天下午1:30 - 今天凌晨3点
SELECT * from table WHERE Timestamp >= '20121010 13:30'
and Timestamp < '20121011 03:00'
是一天一小时
现在,如果您使用DATEPART来解决这个问题,那么就说10-11
SELECT * from table WHERE DATEPART(hour,Timestamp) = 10
这会在几天内发生,不会是SARGABLE,即无法在索引上搜索到真正不符合您要求的内容。
<小时/> 这些来自哪里?