始终将秒/分/小时四舍五入为 00 mysql

Always round set seconds / minutes /hours to 00 mysql

在我的数据库中,我有以下日期时间:

2019-12-12 01:56:46.825
2019-12-12 02:56:47.831
2019-12-12 02:56:47.831

我希望能够检索这些将小时、分钟或秒设置为 00 值的记录:

例如,我希望能够 return 将秒和毫秒设置为 00 的记录:

2019-12-12 01:56:00.000
2019-12-12 02:56:00.000
2019-12-12 02:56:00.000

或者 return 他们也将分钟设置为零。

2019-12-12 01:00:00.000
2019-12-12 02:00:00.000
2019-12-12 02:00:00.000

如何编写查询以根据需要格式化我的结果?

我试过了:

SELECT DISTINCT
concat(
    date_format(data_log.time,'%Y-%m-%d '),
    TIME_FORMAT(SEC_TO_TIME(((TIME_TO_SEC(data_log.time) +30) DIV 60) * 60), '%H:%i:%s')) 
AS result 

这个 return 秒设置为 00 的结果所以我越来越近了

如果您知道要将时间的哪些部分设为零,那么一个简单的

SELECT DATE_FORMAT('2009-10-04 22:23:22.023', '%Y-%m-%d %H:00:00.000');

将return

2009-10-23 22:00:00.000

或者

SELECT DATE_FORMAT('2009-10-04 22:23:22.023', '%Y-%m-%d %H:%i:00.000');

将return

2009-10-23 22:23:00.000

函数 str_to_date() 在这种情况下工作正常:

str_to_date(datecol, '%Y-%m-%d %H:%i') 

str_to_date(datecol, '%Y-%m-%d %H')

参见demo