Подтвердить что ты не робот

Mysql автоматически сохраняет временную метку создания записи

Есть ли какой-то способ, с помощью которого mysql может сохранять временную метку автоматически в строке записи всякий раз, когда она создается. Я пытался использовать timestamp (тип данных) с current_timestamp в качестве значения по умолчанию, но затем понял, что это будет обновляться каждый раз, когда запись обновляется. Мне просто нужно что-то, что будет хранить метку времени создания.

Спасибо

4b9b3361

Ответ 1

Установите ограничение DEFAULT для использования CURRENT_TIMESTAMP:

CREATE TABLE ...
  your_date_column DATETIME DEFAULT CURRENT_TIMESTAMP
  ...

Для существующей таблицы используйте инструкцию ALTER TABLE:

ALTER TABLE your_table
ALTER COLUMN date_column SET DEFAULT CURRENT_TIMESTAMP

Если вы не укажете значение для date_column, по умолчанию будут указаны дата и время выполнения инструкции INSERT. NULL и DEFAULT или допустимые значения, чтобы использовать ограничение по умолчанию в противном случае, считая, что столбец является нулевым.

Ответ 2

Вы можете получить полную информацию о временных отметках в MySQL в https://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html.

То, что вам нужно, это то, что если вы определяете столбец временной метки как предложение DEFAULT CURRENT_TIMESTAMP и не имеете предложения ON UPDATE, столбец имеет текущую временную метку для значения по умолчанию, но не автоматически обновляется.

Но будьте осторожны. Очевидное, что нужно сделать, это иметь два столбца временной метки, один из которых является временем создания, а другой - последним временем обновления. К сожалению, это документированное ограничение MySQL, которое MySQL не поддерживает. Я понятия не имею, почему MySQL имеет такое странное ограничение - никакая другая основная база данных не имеет проблем с этим распространенным случаем использования.

Ответ 3

FYI = "Datetime" - дата и время. "Временная метка" - это переменная дата и время - системное время.

Итак, Имеем два столбца. Один Create Col, один Update Col.

Ответ 4

Следующая команда создаст таблицу приветствия
1. id integer
2. create_at с текущим временем.

create table hello (id int, created_at datetime DEFAULT CURRENT_TIMESTAMP);

Ответ 5

SELECT * FROM test WHERE timestamp >= CURDATE() И отметка времени < CURDATE() + INTERVAL 1 DAY ORDER BY timestamp;