2017-04-22 64 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