2012-11-19 61 views
2

我试图显示当前时间之后有小时值(24小时格式)的行。 目前我使用:SQL时间比较

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

但是当当前时间是例如23:50和储值是00:10这个比较失败。

有什么方法可以正确地进行copmare吗?

这是查询的一部分,以显示巴士站上最近的巴士班次。

+0

通过这个定义,是不是逻辑总是正确的? –

+0

您的出发日期有所不同吗?也就是说,你周末有不同的时间表吗(这里周围的巴士有不同的周六/周日/假日时间表)?如果是这样,你将不得不将它添加到给定的一天,否则你可能会得到一些非常奇怪的起飞时间... –

+0

是的,它总是如此(如果它在同一天),但离开的时间是按时间顺序存储的,所以我的查询显示匹配该比较的第一行。 它们有所不同,但分为平日,星期六和星期日。平日不区分,所以它不会伎俩。 –

回答

0

那么,你可以尝试:

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

这样可以在00:00将每次出发都添加到结果中。 –

+0

是的,因为午夜在一天中的每一小时之后。 –

+0

事实上,这有效:)第一次,我刚刚复制/粘贴它,它不起作用,但在你回复我分析它,并把时间(现在())或时间(小时)= 括号和它工作完美 谢谢:) –

0

我认为这将是更好,如果你检查它是否在未来的一个,然后检查差。据我了解,这将更适合您的使用:

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

好主意,这应该解决我的问题,但它不会返回任何记录。我现在想弄明白为什么。 –