始终将秒/分钟/小时设置为00 mysql

问题描述 投票:0回答:1

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

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

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

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

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

或返回它们,将分钟数也设置为零。

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 

这将返回结果,秒数设置为00,所以我越来越近了

mysql sql rounding
1个回答
1
投票

[如果您知道要在哪部分时间设为零,那么简单

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

将返回

2009-10-23 22:00:00.000

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

将返回

2009-10-23 22:23:00.000

1
投票

str_to_date()在这种情况下可以正常工作:

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

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

请参见demo

© www.soinside.com 2019 - 2024. All rights reserved.