mariadb sec_to_time最多只能显示23:59:59

时间:2018-06-01 08:54:33

标签: time mariadb

我正在使用:

$ 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'

我做错了什么或者这是一个(已知的)错误?

2 个答案:

答案 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显示与命令行界面相同的结果。