Как создать метку времени только с датой в MySQL? - PullRequest
1 голос
/ 26 марта 2012

Я пытаюсь создать метку времени только с датой. это то, что я получаю на работу.

create table verses 
( 
     id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
     username VARCHAR(255), 
     content VARCHAR(1023), 
     time DATE
);

insert into verses (username, content, time) 
values ('test', 'blbabblabalbla', CURDATE());

это работает, но мне нужно каждый раз вставлять время. Есть ли способ сделать это автоматически? как, например, когда мы используем TIMESTAMP? Я попробовал это, но не сработало

create table verses 
( 
   id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
   username VARCHAR(255), 
   content VARCHAR(1023), 
   time CURDATE(TIMESTAMP)
);

Ответы [ 5 ]

1 голос
/ 26 февраля 2014

проще всего вставить дату (сейчас ()) вместо curdate ()

1 голос
/ 26 марта 2012

Вы должны будете установить свое поле на datetime вместо date.

Также в документации сказано:

Начиная с MySQL 5.6.5, столбцы TIMESTAMP и DATETIMEможет быть автоматически инициализирован и обновлен до текущей даты и времени [...]

А также:

Для любого столбца TIMESTAMP или DATETIME в таблице вы можетеприсвойте текущую метку времени как значение по умолчанию, значение автообновления или и то, и другое.Для автоматически инициализированного столбца устанавливается текущая временная метка для вставленных строк, которые не указывают значение для столбца.[...]

Если вам нужна дополнительная информация по этому вопросу, обратитесь к официальной документации .

0 голосов
/ 26 марта 2012

Вы можете создать триггер BEFORE INSERT и всегда устанавливать 'CURDATE' для поля time.

0 голосов
/ 26 марта 2012

Теоретически вы можете установить значение ПО УМОЛЧАНИЮ следующим образом:

create table verses ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    username VARCHAR(255), content VARCHAR(1023), time DATE DEFAULT CURDATE());

Однако, кажется, это невозможно в mySQL:

Предложение DEFAULT определяет значение по умолчанию для столбца. С одним исключение, значение по умолчанию должно быть константой; это не может быть функция или выражение.

Итак, вам нужно либо использовать TIMESTAMP, либо поддерживать это вручную, извините. Технически это все еще выполняется вручную, но вы можете эмулировать автоматический процесс, используя триггер

0 голосов
/ 26 марта 2012

Попробуйте использовать DateTime вместо типа DATE, чтобы сохранить время.Что касается вставки даты со временем, используйте функцию NOW () вместо DATE ().См. ссылку для справки.

...