如果我进行如下查询:
SELECT HOUR( TIMEDIFF('2012-08-12 02:25:00',
'2012-09-14 02:25:33') ) as result
结果是792,即使我从未来的某个日期减去过去的数据。
如果我删除HOUR()
并执行:
SELECT TIMEDIFF('2012-08-12 02:25:00',
'2012-09-14 02:25:33') as result
然后值为-792:00:33
。因此,显然HOUR()
正在将-792转换为792.我已经尝试了其他日期,结果是相同的(总是返回正数小时)。
The manual没有说明这种行为。
这是一个错误,还是我可以依赖的功能出现在最近的所有mysql安装中?
答案 0 :(得分:5)
有一种方法可以获得正面时间和负面时间。 EXTRACT
会得到否定的。
SELECT EXTRACT(HOUR FROM '-01:00:00'), HOUR('-01:00:00')
将返回:
-1 1
答案 1 :(得分:1)
似乎这是一种预期的行为(不能说是bug还是功能)。 参见示例:
mysql> select hour('-23:00:00');
+-------------------+
| hour('-23:00:00') |
+-------------------+
| 23 |
+-------------------+
1 row in set (0.04 sec)
如果您需要从那里获取时间,我建议解析结果(如果可能,在SQL之外)
答案 2 :(得分:-1)
根据手册,TIMEDIFF
只能收到TIME
个参数,而您正在使用的参数是DATE
个值。
试试DATEDIFF