我将日期存储为大整数:20170305080000 代表2017-03-05 08:00:00
MySQL可以将该大整数解释为日期,实际上我可以运行以下语句:
SELECT CONVERT(20170305080000 + INTERVAL 15 MINUTE, INT)
输出
2017-03-05 08:15:00
但是可以输出20170305081500吗? 或者如何在同一个语句中再次将输出转换为大整数?
答案 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