2017-04-22 65 views
1

我有存储为一个大的整数的日期:20170305080000 其表示2017年3月5日八点00分00秒MySQL的增加的时间间隔表示为BIGINT日期

MySQL能够解释该大整数作为约会,其实我可以运行下面的语句:

SELECT CONVERT(20170305080000 + INTERVAL 15 MINUTE, INT) 

其输出

2017-03-05 08:15:00 

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

回答

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 
+0

是的,我也一直在对这种古怪的事物猛冲。谢谢,这工作 – resle