【问题标题】:SQL time comparisionSQL时间比较
【发布时间】:2012-11-19 19:10:10
【问题描述】:

我正在尝试显示在当前时间之后具有小时值(24H 格式)的行。 目前我正在使用:

where time(hour)>time(now())

但是当当前时间是例如 23:50 并且存储的值是 00:10 时,这种比较会失败。

有什么方法可以正确复制吗?

这是查询的一部分,用于显示公交车站上最近的公交车发车时间。

【问题讨论】:

  • 按照这个定义,逻辑不总是正确的吗?
  • 您的出发时间每天都不同吗?也就是说,你周末有不同的时间表吗(这里的公共汽车有不同的周六/周日/节假日时间表)?如果是这样,您将不得不将其添加到给定的日期,否则您可能会得到一些非常奇怪的出发时间......
  • 是的,它总是正确的(如果它是在同一天),但是出发时间是按时间顺序存储的,所以我的查询显示了与该比较匹配的第一行。它们各不相同,但分为工作日、周六和周日。工作日没有区别,所以它不会起作用。

标签: sql time compare


【解决方案1】:

嗯,你可以试试:

where time(hour)>time(now()) or time(hour) = 0

【讨论】:

  • 这会将 00:00 的每次出发时间添加到结果中。
  • 是的,因为午夜是在一天中每隔一个小时之后。
  • 确实有效 :) 第一次我只是复制/粘贴它并没有用,但在你的回复之后我分析它并输入时间(现在())或时间(小时) = 0 在括号中,它工作得很好谢谢:)
【解决方案2】:

我认为最好先检查它是否在未来,然后检查差异。据我了解,这对您的使用效果更好:

WHERE time > NOW() and TIMESTAMPDIFF(MINUTE,time,NOW()) < 60

【讨论】:

  • 好主意,这应该可以解决我的问题,但它根本不返回任何记录。我现在正试图找出原因。
猜你喜欢
  • 1970-01-01
  • 2014-09-11
  • 2014-02-12
  • 2011-05-27
  • 2016-11-17
  • 1970-01-01
  • 2011-03-19
  • 2016-09-16
相关资源
最近更新 更多