Ищем MySQL По умолчанию вчера дата - PullRequest
0 голосов
/ 25 мая 2018

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

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

Screenshot for the same

Но я хочу, чтобы по умолчанию для каждой вставки данных в формате (ГГГГ-ММ-ДД) использовалась вчерашняя дата.

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

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

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Значения 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 голосов
/ 25 мая 2018

Согласно официальной документации 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 День :

СЕЙЧАС() возвращает DATETIME.

И ИНТЕРВАЛ работает в соответствии с именем, например, ИНТЕРВАЛ 1 ДЕНЬ = 24 часа.

Так что если ваш скрипт cron'd для запуска в 03:00, он пропуститпервые три часа записей из «самого старого» дня.

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

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

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