始终将秒/分/小时四舍五入为 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。
在我的数据库中,我有以下日期时间:
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。