7

如果我进行如下查询:

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。我已经尝试过使用其他日期,结果是相同的(总是返回正小时)。

该手册没有说明这种行为。

这是一个错误,还是我可以依赖它存在于所有最近的 mysql 安装中的功能?

4

2 回答 2

6

有一种方法可以得到正时和负时。EXTRACT会得到负数。

SELECT EXTRACT(HOUR FROM '-01:00:00'), HOUR('-01:00:00')

将返回:

-1    1
于 2014-07-30T09:10:27.400 回答
1

似乎这是一种预期的行为(不能说是错误还是功能)。请参阅示例:

mysql> select hour('-23:00:00');
+-------------------+
| hour('-23:00:00') |
+-------------------+
|                23 |
+-------------------+
1 row in set (0.04 sec)

如果您需要从那里获取时间,我建议您解析结果(如果可能,在 SQL 之外)

于 2012-09-13T22:13:19.767 回答