2014-09-15 2 views
0

Я использую timestamp, чтобы сохранить публикацию загрузок. Я хочу добавить фильтр для сортировки записей к году их загрузки, поэтому вам нужно изменить пару записей на предыдущие годы для целей тестирования. Когда я пытаюсь вручную настроить дату изнутри mysql, щелкнув календарь и выбрав дату, он будет отмечать ошибки.Как вручную изменить значение временной метки до предыдущего года?

Значение метки времени установлено равным CURRENT_TIMESTAMP. Значения функции в поле метки времени является:

NOW 
CURDATE 
FROM_DAYS 
FROM_UNIXTIME 
PERIOD_ADD 
PERIOD_DIFF 
TO_DAYS 

Я ничего не могу найти в Интернете, относящееся к этому. Мне не нужно выполнять вычисления, мне нужно вручную настроить дату.

+0

вы использовали 'ON UPDATE CURRENT_TIMESTAMP' оптацию создании таблицы? Это заставит mysql обновлять временную метку каждый раз, когда вы обновляете строку th, поэтому вы не можете обновить метку времени, поскольку она будет более или менее перезаписана. – newBee

+0

Нет. Я не знаком с этим. Мое поле называется pubdate, так как я могу использовать функцию ON UPDATE, чтобы изменить значение поля на «2013-10-27 00:00:00»? – MBM

ответ

0

В случае проблема заключается в том, что вы использовали ON UPDATE CURRENT_TIMESTAMP на этой колонке вы можете удалить эту настройку, пересматривая свой столбец:

ALTER TABLE yourTable MODIFY COLUMN pubdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

Вы можете также проверить документы:

With neither DEFAULT CURRENT_TIMESTAMP nor ON UPDATE CURRENT_TIMESTAMP, 
it is the same as specifying both DEFAULT CURRENT_TIMESTAMP and 
ON UPDATE CURRENT_TIMESTAMP. 

и я предположим, что ваша таблица была создана без определения какого-либо из этих двух, что привело к поведению, которое вы не можете обновить этот столбец, поскольку он обновляется автоматически. Что происходит:

  1. Вы выбираете строку и перепишите метку (например, установка даты до 2013 года)
  2. MySQL определяет, что строка была обновлена ​​
  3. , как ON UPDATE CURRENT TIMESTAMP неявно указано MySQL обновляет поле временной метки с текущим временем
  4. ваших изменений метки времени будут перезаписаны/потеряли
+0

№ Текущая дата записывается, что не является проблемой. Значение столбца current_timestamp. Мне нужно ввести даты с 2013 по 2012 год, чтобы проверить фильтр даты. – MBM

+0

Я знаю, но это утверждение удалит настройки 'ON UPDATE CURRENT_TIMESTAMP', которые помешали бы вам изменить временные метки – newBee

+0

О, верно. Благодарю. Я изменил некоторые записи. Повторяю ли это заявление для обеспечения соблюдения текущей_timestamp для новых записей? – MBM

Смежные вопросы