我正在使用:
$ mysql --version
mysql Ver 15.1 Distrib 10.2.14-MariaDB, for Linux (x86_64) using readline 5.1
如果我这样查询:
select sec_to_time(timestampdiff(SECOND, '2018-05-31T00:00:00', '2018-06-01T00:00:01'))
union all
select sec_to_time(24*60*60+1)
结果始终为'00:00:01'而不是'24:00:01'
我做错了什么或者这是一个(已知的)错误?
答案 0 :(得分:0)
刚刚发现,这是一个“显示问题”。
运行
select sec_to_time(timestampdiff(SECOND, '2018-05-31T00:00:00', '2018-06-01T00:00:01'))
mysql / mariadb命令行工具中的给出'24:00:01'
当通过DbVisualizer在同一个DB上运行时,它会给出'00:00:01'。
这只是一个显示问题,因为排序有效:
select sec_to_time(timestampdiff(SECOND, '2018-05-31T00:00:00', '2018-06-01T00:00:01'))
union all
select sec_to_time(timestampdiff(SECOND, '2018-05-31T00:00:01', '2018-06-01T00:00:01'))
union all
select sec_to_time(timestampdiff(SECOND, '2018-05-31T00:00:02', '2018-06-01T00:00:01'))
union all
select sec_to_time(timestampdiff(SECOND, '2018-06-01T00:00:00', '2018-06-01T00:00:01'))
按1排序
很乐意展示
00:00:01
23:59:59
00:00:00
00:00:01
...对不起
答案 1 :(得分:0)
询问DbVis专家,我得到了解决方案。
JDBC驱动程序将结果作为时间对象返回。
命令行界面将其作为CHAR对象返回。
Casting to CHAR显示与命令行界面相同的结果。