什么是时间戳操作的SQL函数?

时间:2012-10-11 03:34:24

标签: sql sql-server

我是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个时间戳的范围,所以我可以通过以下参数选择行:

  1. 第二范围
  2. 分钟范围
  3. 小时范围
  4. 日间范围
  5. 周范围
  6. 月份范围
  7. 年范围
  8. 是否有一个功能可以输入2个时间戳并获得范围?或者这是我需要的功能组合?

    任何好的网站引用都会有很大的价值。 MSDN网站没有帮助我隔离正确的方法。我一直在寻找大约一个小时试图从今天下午1:30到下午1:30获得最后一天。

2 个答案:

答案 0 :(得分:4)

您可以使用< code> DATEPART< / code>得到:

second, minute, hour, day, week, month, year

Reference for more

使用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,即无法在索引上搜索到真正不符合您要求的内容。

<小时/> 这些来自哪里?

  • 第二范围
  • 分钟范围
  • 小时范围
  • 日间范围
  • 周范围
  • 月份范围
  • 年范围