Всегда вокруг установленных секунд / минут / часов до 00 mysql - PullRequest
0 голосов
/ 06 января 2020

В моей базе данных у меня есть следующие даты и время:

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, так что я получаю доводчик

Ответы [ 2 ]

1 голос
/ 06 января 2020

Функция str_to_date() отлично работает в этом случае:

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

или

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

См. Демоверсию .

1 голос
/ 06 января 2020

Если вы знаете, какие части времени вы хотите получить как ноль, то простой

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:%i:00.000');

вернет

2009-10-23 22:23:00.000
...