Обновлять только время в MySQL поле DateTime - PullRequest
32 голосов
/ 25 августа 2009

Как я могу обновить только время в уже существующем поле DateTime в MySQL? Я хочу, чтобы дата оставалась прежней.

Ответы [ 11 ]

51 голосов
/ 11 февраля 2011

Попробуйте это:

UPDATE yourtable SET yourcolumn=concat(date(yourcolumn), ' 21:00:00') WHERE Id=yourid;
12 голосов
/ 26 января 2010

Попробуйте это:

UPDATE t1 SET DateTimeField = CONCAT(DATE(DateTimeField),' 12:34:56');
4 голосов
/ 13 февраля 2012

Я решил таким образом:

UPDATE table
SET myDateTime = CONCAT_WS(' ',DATE(myDateTime), CURTIME())
WHERE id = @id;

Очевидно, вы должны изменить CURTIME() с нужным вам временем.

3 голосов
/ 09 сентября 2009
UPDATE myTable
SET myDateTime = ADDTIME(DATE(myDateTime), @myTimeSpan)
WHERE id = @id;

Документация по функциям дат MySQl Документы MySQL

1 голос
/ 19 августа 2011

Попробуйте это:

UPDATE sms 
SET entry_period_end_date= entry_period_end_date+INTERVAL 6 Hour 
WHERE TIME(entry_period_end_date) = '06:00:00';
1 голос
/ 25 августа 2009
UPDATE myTable
SET myDateTime = ADDTIME(myDateTime, @myTimeSpan)
WHERE id = @id;

Точный синтаксис функции см. В this .

0 голосов
/ 31 октября 2018

Я использовал ДОБАВИТЬ следующим образом

Ранее на моем облачном сервере DateTime был установлен в UTC, но после изменения DateTime на Asia / Kolkata, то есть UTC 5:30, я хотел, чтобы то же самое отражалось в таблицах моей базы данных.

Я хотел обновить столбцы create_at и updated_at на 5 часов 30 минут. Я сделал следующее

Для обновления всех строк таблицы

UPDATE 
    products 
SET 
    created_at = ADDTIME(created_at, '5:30:0'), 
    updated_at = ADDTIME(updated_at, '5:30:0') 

Вы можете опустить условие WHERE, если хотите обновить все записи, но так как мои новые записи были обновлены с правильными значениями. Так что только мои строки ниже id меньше 2500 должны быть обновлены

UPDATE 
    products 
SET 
    created_at = ADDTIME(created_at, '5:30:0'), 
    updated_at = ADDTIME(updated_at, '5:30:0') 
WHERE
    id < 2500;
0 голосов
/ 05 июня 2015

Если у вас есть поля ДАТА и ВРЕМЯ и вы хотите ввести время в дату, попробуйте следующее:

UPDATE mytable
SET mydatefield = ADDTIME( DATE_FORMAT(mydatefield,'%Y-%m-%d 00:00:00'), mydatefield)
WHERE myid = ...
0 голосов
/ 03 октября 2012

На странице MySQL DEV отображаются такие функции, как subtime и difftime

Пример кода для подсчета времени выше всех сообщений за 3 часа:

UPDATE tablepost SET datepost = SUBTIME( datepost , '0 3:0:0' );

Обратите внимание, что значения 0 не изменяют соответствующее поле. Позаботьтесь об этом коде, сначала используйте select для проверки этих функций.

Ссылка: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_subtime

0 голосов
/ 25 августа 2009

Ну, именно то, что вы просите, невозможно. Компоненты даты и времени не могут быть обновлены отдельно, поэтому вам нужно вычислить новое значение DateTime из существующего, чтобы можно было заменить все значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...