2010-11-11 44 views
2

我需要找到下一個(分五整除):00從獲得的UTC當前時間的結果,讓我解釋...圓了一個MySQL UTC_TIMESTAMP下一5分鐘塊

我使用

SELECT UTC_TIMESTAMP() 

在MySql中的函數,它返回「2010-11-11 16:26:19」。

我然後要將該值轉換爲「16時30分00秒2010-11-11」,優選地使用MySQL只或MySQL和PHP的組合。

乾杯!

回答

3
MsSQL: 
DATEADD(second, (60 - DATEPART(second, Last_Updated)) + ((5 - (DATEPART(minute, Last_Updated) % 5)) * 60) - 60, Last_Updated) 
MySQL: 
SELECT DATE_ADD(UTC_TIMESTAMP(), INTERVAL ((60 - SECOND(UTC_TIMESTAMP())) + ((5 - (MINUTE(UTC_TIMESTAMP()) % 5)) * 60) - 60) SECOND); 

將「Last_Updated」替換爲要轉換的值,但會在5:00到達下一個5分鐘的時間間隔內找到任何內容。

2010-10-26 18:04:07.000 2010-10-26 18:05:00.000 
2010-11-10 17:18:59.000 2010-11-10 17:20:00.000 
2010-11-10 20:59:27.000 2010-11-10 21:00:00.000 
2010-11-10 20:59:46.000 2010-11-10 21:00:00.000 
2010-11-11 12:00:51.000 2010-11-11 12:05:00.000 
2010-11-11 12:30:59.000 2010-11-11 12:35:00.000 

這些都是我在我的最後測試數據庫的結果。

編輯忘了包括MySQL版本,哎呀呀。一直以來,MsSQL版本一直讓人感到好奇。

3

編輯:我不是MySQL用戶...我會離開必需品,somone可能會做更多的事情。

SELECT UTC_TIMESTAMP() + 300 - UNIX_TIMESTAMP() % 300; 

編輯:我只是改寫了上述在MySQL的工作:

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(UTC_TIMESTAMP()) 
+ 300 - (UNIX_TIMESTAMP(UTC_TIMESTAMP()) % 300)); 

我不認爲這也正是OP想要的東西,因爲它也圓了5分鐘的時候,時間是5分鐘完全整除。例如,14:45:00會四捨五入到14:50:00,這是錯誤的。但這是向正確方向邁出的一步。

+0

呃,你爲什麼打破它錘子? – plundra 2010-11-11 16:56:21

2

我會結合使用UNIX_TIMESTAMP()和FROM_UNIXTIME()與ROUND()到那裏。

所以最近的5分鐘爲界將是:

select now(),from_unixtime(300 * round(unix_timestamp(now())/300)); 

+---------------------+-------------------------------------------------------+ 
| now()    | from_unixtime(300 * round(unix_timestamp(now())/300)) | 
+---------------------+-------------------------------------------------------+ 
| 2011-04-23 09:20:35 | 2011-04-23 09:20:00         | 
+---------------------+-------------------------------------------------------+ 

使用Unix時間你在幾秒鐘內工作。最近10秒鐘,然後除以10,輪再乘以10

最近分鐘 - 用60 最接近的小時 - 使用3600

你的想法。

+0

我有一個不同的問題,這有助於。謝謝! – 2011-11-10 17:41:02

+0

這是不對的,操作系統想把圓整到最近的5分鐘標記,而不是簡單的圓 – superphonic 2015-10-23 14:47:08

+0

將總數的一半要舍入(150)到unix_timestamp(now())。 這樣,它總是會「向上」 – twicejr 2016-10-27 13:50:07