首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取时间间隔

获取时间间隔
EN

Stack Overflow用户
提问于 2013-04-30 18:34:42
回答 3查看 1.7K关注 0票数 0

很抱歉,如果这个问题已经在某个地方被问到了,但我一直在努力寻找答案!我有一个日期时间字段,是活动的日期时间戳。

我需要一个查询,它只返回今天日期和事件之间08:00到10:00之间的数据的信息。我的大脑说它应该是直截了当的,但我不能理解。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-30 18:53:54

给你..。

代码语言:javascript
复制
SELECT * FROM <TABLE_NAME> WHERE EVENTS_DATE BETWEEN
DATEADD(hour, 8, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) 
AND 
DATEADD(hour, 10, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0))

如果在TSQL中使用变量,则将今天日期存储在该变量中

代码语言:javascript
复制
DATEADD(day, DATEDIFF(day, 0, GETDATE())
票数 1
EN

Stack Overflow用户

发布于 2013-04-30 18:54:47

为了获得特定的时间点,我倾向于使用DATEADD/DATEDIFF模式。它可能看起来有点笨拙,但性能相当不错,一旦你习惯了它,它就会变得更具可读性:

代码语言:javascript
复制
SELECT * --TODO - Pick columns
FROM Activities
WHERE OccurredAt BETWEEN
     DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00') AND
     DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T10:00:00')

在这里,我使用了两次。它只依赖于您选择的两个日期常量之间的关系,因为它们展示了您想要的特性。所以这里:

代码语言:javascript
复制
DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00')

我正在计算从2001年1月1日到现在已经过去的(完整)天数。然后我将这个(整数)天数添加到2001年1月1日的08:00 -从逻辑上讲,这将是今天的08:00。

票数 2
EN

Stack Overflow用户

发布于 2013-04-30 18:49:38

代码语言:javascript
复制
select ...
where dateColumn between 
  convert(varchar(10), getdate(), 120) + 'T08:00:00' 
  and convert(varchar(10), getdate(), 120) + 'T10:00:00'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16297801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档