как вставить дату в MySQL таблице - PullRequest
2 голосов
/ 20 апреля 2010

У меня есть MySQL таблица с именем pollOfTheWeek. У него есть столбец «pollDate» типа date. У меня есть два вопроса по этому поводу: 1. Я объявил столбец при создании таблицы как [pollDate date]. Я хотел, чтобы этот столбец устанавливался автоматически, когда пользователь не вводит никакого значения для этого столбца. Как мне объявить колонку для достижения этой цели?

  1. Предполагая, что у меня такая же декларация, как и выше, как мне ввести пустое значение. Я имею в виду, если бы столбец был типа varchar, я бы ввел пустое значение как "". Но так как он имеет тип date, я получаю сообщение об ошибке при вводе значения как "". Как ввести пустое значение для столбца pollDate?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2010

Вам необходимо создать триггер:

CREATE TRIGGER triggerName
BEFORE INSERT ON yourTable
FOR EACH ROW
SET NEW.date = coalesce(NEW.date, curdate());

Пустое значение будет null.

1 голос
/ 20 апреля 2010

MySQL имеет крайне ограниченную поддержку значений по умолчанию. Как правило, это должно быть константное выражение, например '0' или '(none)', и функции не допускаются. Единственное исключение, о котором я знаю, это то, что вы можете установить CURRENT_TIMESTAMP в качестве значения по умолчанию для столбца TIMESTAMP; однако это недоступно для столбцов DATE или DATETIME. К сожалению, TIMESTAMP имеет меньший диапазон и содержит информацию о времени.

Итак, ваши варианты:

  1. Сделайте это в своем клиентском приложении, установив NOW () в качестве значения во вставках.
  2. Написать триггер:

.

CREATE TRIGGER pollOfTheWeek_trg BEFORE INSERT ON pollOfTheWeek 
    FOR EACH ROW SET NEW.pollDate = NOW();

Что касается пустых значений, я бы просто использовал NULL. Зачем использовать пустые строки?

1 голос
/ 20 апреля 2010

нет способа автоматически установить столбец DATE на текущую дату / время в mysql. TIMESTAMP s может быть автоматически установлен на текущее время. в качестве альтернативы просто введите NOW() в качестве параметра при вставке:

INSERT INTO pollOfTheWeek (name, pollDate) VALUES ('someName', NOW());

Что касается вашего другого вопроса, вы, вероятно, захотите разрешить значения NULL в столбце даты и установить их в NULL, если дата не указана.

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