在我的数据库中,我具有以下日期时间:
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,所以我越来越近了
[如果您知道要在哪部分时间设为零,那么简单
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
str_to_date()
在这种情况下可以正常工作:
str_to_date(datecol, '%Y-%m-%d %H:%i')
或
str_to_date(datecol, '%Y-%m-%d %H')
请参见demo。