MYSQL将日期时间缩短为15分钟

Ana*_*Ana 10 mysql

我想在MYSQL数据库表中将日期时间轮更新为15分钟.

例如:

如果是dateTime 2013-10-08 10:36:00,我想将它转换为2013-10-08 10:30:00 Like,2013-10-08 10:22:00to2013-10-08 10:15:00

我已经看到了这个答案,但它只将日期时间转换为秒并仅返回时间,我也想要日期.

谢谢

Str*_*rry 12

SELECT NOW() x,FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(NOW())/900)*900) y;
+---------------------+---------------------+
| x                   | y                   |
+---------------------+---------------------+
| 2013-10-10 09:50:20 | 2013-10-10 09:45:00 |
+---------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)


AL̲*_*̲̳I 7

你看到的答案非常有用,试试这个

SELECT SUBSTRING_INDEX(datetime_field, ' ', -1) AS old_time,SEC_TO_TIME((TIME_TO_SEC(datetime_field) DIV 900) * 900) AS rounded_time, datetime_field FROM yourtable
Run Code Online (Sandbox Code Playgroud)

您可以从datetime_field获取时间作为子字符串,并将其替换为舍入时间.

如果要更新日期时间,可以回复它并使用更新功能进行更新

UPDATE yourtable SET `datetime_field` =  REPLACE(datetime_filed,SUBSTRING_INDEX(datetime_field, ' ', -1),SEC_TO_TIME((TIME_TO_SEC(datetime_field) DIV 900) * 900))
Run Code Online (Sandbox Code Playgroud)

我希望有帮助......


Use*_*ady 5

使用 unix_timestamp 允许非常简单的算术,如果需要,请将下面代码中的 15 更改为其他数字(例如 30)

select from_unixtime(round(unix_timestamp('2013-10-08 10:36:00')/(60*15))*(60*15)); 

= October, 08 2013 10:30:00+0000

select from_unixtime(round(unix_timestamp('2013-10-08 10:22:00')/(60*15))*(60*15)); 

= October, 08 2013 10:15:00+0000
Run Code Online (Sandbox Code Playgroud)

请参阅:http://forums.mysql.com/read.php ?20,131939,201089#msg-201089