MySQL将时间间隔添加到以bigint表示的日期

时间:2017-04-22 15:16:11

标签: mysql datetime

我将日期存储为大整数:20170305080000 代表2017-03-05 08:00:00

MySQL可以将该大整数解释为日期,实际上我可以运行以下语句:

SELECT CONVERT(20170305080000 + INTERVAL 15 MINUTE, INT)

输出

2017-03-05 08:15:00

但是可以输出20170305081500吗? 或者如何在同一个语句中再次将输出转换为大整数?

1 个答案:

答案 0 :(得分:0)

您需要将值作为日期时间获取。首先转换为字符串,然后转换为日期时间:

select str_to_date(CAST(20170305080000 as char), '%Y%m%d%h%i%s')

现在您可以添加值:

select str_to_date(CAST(20170305080000 as char), '%Y%m%d%h%i%s') + interval 15 minute

然后返回一个字符串和bigint:

select cast(date_format(str_to_date(CAST(20170305080000 as char), '%Y%m%d%h%i%s') + interval 15 minute, '%Y%m%d%h%i%s00') as bigint)

你会注意到我更喜欢显式的强制转换。但是小数秒有一个挑战。

有趣的是,我发现隐式转换有效,但显式转换似乎会产生错误:

select CONVERT(20170305080000 + INTERVAL 15 MINUTE, datetime) + 0

但仍然存在小数秒的问题,所以你真的需要:

select CONVERT(20170305080000 + INTERVAL 15 MINUTE, datetime) * 100