Ищем MySQL По умолчанию вчера дата

0

Я использую MySql через терминал. Ниже приведена команда, которую я использовал для создания таблицы, но она показывает дату в ГГГГ-ММ-ДД ЧЧ: ММ: СС (пример: 2018-05-25 14:12:47)

create table test (foo int, ts timestamp default CURRENT_TIMESTAMP);

Изображение 174551

Но по умолчанию я хочу, чтобы каждый день я вставлял данные в (YYYY-MM-DD).

Пожалуйста, помогите мне найти команду.

Спасибо, Амит

  • 0
    Я считаю, что на этот пост уже был дан ответ: stackoverflow.com/questions/12163263/…
  • 0
    Нет, дорогой, я ищу автообновление только вчерашней даты ... нет связи с сообщением, которым вы поделились.
Показать ещё 1 комментарий
Теги:
terminal

2 ответа

0

Значения DEFAULT в MySQL должны быть константами. Они не могут быть функциями или выражениями (за исключением CURRENT_TIMESTAMP).

Источник: http://dev.mysql.com/doc/refman/5.6/en/data-type-defaults.html

Кроме того, вы можете добавить триггер в таблицу для вашего требования

Просто создайте таблицу без ограничений

create table test (foo int, ts timestamp );

Затем добавьте триггер в эту таблицу

CREATE TRIGGER settime
BEFORE INSERT on test 
FOR EACH ROW BEGIN
   IF new.'ts ' is null THEN
    SET new.'ts ' = DATE_ADD(NOW(), INTERVAL -1 DAY);
    END IF;
END;
0

Согласно официальной документации по MySQL https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add, вы можете сделать следующее:

Если вы хотите сохранить "вчера" при создании:

ts TIMESTAMP NOT NULL DEFAULT NOW() - INTERVAL 1 DAY

Если вы хотите сохранить "вчера" при каждом обновлении:

ts TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW() - INTERVAL 1 DAY

В соответствии с этим ответом Выберите записи из СЕЙЧАС() -1 День:

NOW() возвращает DATETIME.

И INTERVAL работает как названо, например INTERVAL 1 DAY = 24 часа.

Поэтому, если ваш скрипт будет запущен в 03:00, он пропустит первые три часа записей из "самого старого" дня.

Чтобы получить весь день, используйте CURDATE() - INTERVAL 1 DAY. Это вернется к началу предыдущего дня независимо от запуска сценария.

Надеюсь, поможет!

  • 0
    Выражения не допускают таких значений по умолчанию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню