Я использую MySql через терминал. Ниже приведена команда, которую я использовал для создания таблицы, но она показывает дату в ГГГГ-ММ-ДД ЧЧ: ММ: СС (пример: 2018-05-25 14:12:47)
create table test (foo int, ts timestamp default CURRENT_TIMESTAMP);
Но по умолчанию я хочу, чтобы каждый день я вставлял данные в (YYYY-MM-DD).
Пожалуйста, помогите мне найти команду.
Спасибо, Амит
Значения 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;
Согласно официальной документации по 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. Это вернется к началу предыдущего дня независимо от запуска сценария.
Надеюсь, поможет!