#mysql
#mysql
Вопрос:
Я хочу вставить / обновить данные в таблицу с текущим временем, но я хочу, чтобы секунды были равны 0, например, ‘2014-06-27 23:36:00‘. Как мне этого добиться?
Я думаю, что MAKETIME() может быть каким-то образом задействован, но я действительно понятия не имею, как.
CURDATE() INTERVAL HOUR() HOUR INTERVAL MINUTE() MINUTE
к сожалению, не работает, что неудивительно.
Редактировать: окончательное решение — DATE_FORMAT(CURTIME(), '%Y-%m-%d %H:%i:00')
.
Ответ №1:
mysql> select date_format(current_timestamp(), '%Y-%m-%d %H:%i:00') as ts_zero_seconds;
---------------------
| ts_zero_seconds |
---------------------
| 2014-06-27 02:06:00 |
---------------------
Комментарии:
1. Это должно быть
%Y-%m-%d %H:%i:00
. Я не работаю по 12 часов.
Ответ №2:
Ваша идея должна работать с аргументами функций:
CURDATE() INTERVAL HOUR(now()) HOUR INTERVAL MINUTE(now()) MINUTE
Комментарии:
1. Ну, как бы это ни было смешно, это работает, спасибо. Я, вероятно, воспользуюсь решением @Bill Karwin, хотя оно намного короче, если я заменю
CURRENT_TIMESTAMP()
наCURTIME()
, оно работает, и мне это нужно очень редко.2. В качестве примечания решение Билла возвращает строку. Это решение возвращает дату и время, которые, казалось, были тем, о чем спрашивал вопрос.
3. Это для вставки в базу данных в столбец datetime. Он принимает строки.
Ответ №3:
Я знаю, что уже есть принятый ответ, и я немного опаздываю с разговором, но просто вкладываю свои 2 цента для всех, кому это может помочь. Это то, что я использую, чтобы получить временную метку с 0 секундами. Не стесняйтесь указывать на любые недостатки в моей логике. =)
select CURRENT_TIMESTAMP - interval second(CURRENT_TIMESTAMP) second
Просто возьмите временную метку и вычтите из нее секунды. Это также работает для столбцов datetime или timestamp в таблицах. Итак, если вы хотите выбрать столбец временной метки с 0 секундами, используйте это:
select timestamp_col - interval second(timestamp_col) second from table