mysql спросил
Изменено 7 лет, 2 месяца назад
Просмотрено 69 тысяч раз
Можно ли определить столбец отметки времени в таблице MySQL, который будет автоматически обновляться каждый раз при изменении поля в той же строке? В идеале этот столбец должен изначально быть установлен на время вставки строки.
Ура, Don
- mysql
- timestamp
Вы можете использовать столбец timestamp, как упоминалось в других плакатах. Вот SQL, который вы можете использовать для добавления столбца:
ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
Это добавляет столбец под названием «lastUpdated» со значением по умолчанию текущей даты/времени.
Это функция по умолчанию для типа столбца timestamp . Однако обратите внимание, что формат этого типа — ггггммддччммсс (все цифры, без двоеточий или других разделителей).
РЕДАКТИРОВАТЬ: Приведенный выше комментарий о формате верен только для версий MySQL < 4.1... Более поздние версии форматируют его как DateTime
1Это то, что я наблюдал (MySql 5.7.11) —
Первый столбец TIMESTAMP в таблице получает текущую метку времени в качестве значения по умолчанию. Таким образом, если вы выполняете INSERT или UPDATE без указания значения, столбец получит текущую отметку времени.
Все последующие столбцы TIMESTAMP должны иметь явно определенное значение по умолчанию. Если у вас есть два столбца TIMESTAMP и вы не укажете значение по умолчанию для второго столбца, вы получите эту ошибку при попытке создать таблицу —
ОШИБКА 1067 (42000): Недопустимое значение по умолчанию для ‘COLUMN_NAME’
Временная метка MySQL устанавливается с временем создания или обновления, только если их значение по умолчанию установлено как оно.
ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP
. В противном случае оно работает так же, как поле DateTime, только если оно относится к 1970/01/01 UTC, поэтому это абсолютный момент времени, не зависящий от конкретного часового пояса, как DateTime.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
mysql — Какая разница между типами DATE, TIME, DATETIME и TIMESTAMP
спросил
Изменено 4 месяца назад
Просмотрено 209k раз
Мне нужно сохранить как , время
NOW()
. Но я не знаю, что мне использовать для столбца типа im phpmyadmin. Следует отметить, что NOW()
возвращает время и дату следующим образом:2014-11-11 12:45:34
Вот решение, я могу использовать разделитель для разделения даты и времени ( 2014-11-11
и 12:45:34
), а затем сохранить их в типе DATE и типе TIME по отдельности. Или я могу использовать тип VARCHAR для хранения их обоих в одном столбце. Но я думаю, что эти способы не являются стандартными. что такое стандартный тип для хранения даты и времени?
Вот мой запрос: (также я не знаю, почему функция СЕЙЧАС()
не работает)
ВСТАВИТЬ В таблицу (дата времени) ЗНАЧЕНИЯ (СЕЙЧАС())
- MySQL
- SQL
- дата-время
ДАТА: Используется для значений с частью даты, но без части времени. MySQL извлекает и отображает значения DATE в формате ГГГГ-ММ-ДД . Поддерживаемый диапазон: 1000-01-01
до 9999-12-31
.
DATETIME: Используется для значений, содержащих как дату, так и время. MySQL извлекает и отображает значения DATETIME в формате 1000-01-01 00:00:00
до 9999-12-31 23:59:59
.
TIMESTAMP: Также используется для значений, содержащих как дату, так и время, а также часовой пояс. TIMESTAMP имеет диапазон 1970-01-01 00:00:01
UTC до 2038-01-19 03:14:07
UTC.
ВРЕМЯ: Его значения представлены в формате ЧЧ:ММ:СС (или ЧЧЧ:ММ:СС для больших значений часов). Значения TIME могут находиться в диапазоне от
до 838:59:59
. Часть часов может быть такой большой, потому что тип TIME может использоваться не только для представления времени суток (которое должно быть меньше 24 часов), но также прошедшего времени или временного интервала между двумя событиями (которое может быть намного больше, чем 24 часа). 24 часа или даже минус).
У меня немного другая точка зрения на разницу между DATETIME и TIMESTAMP . DATETIME хранит буквальное значение даты и времени без привязки к какому-либо конкретному часовому поясу. Итак, я могу установить для столбца
Столбец TIMESTAMP , с другой стороны, принимает значение «2019-01-16 12:15:00», которое вы устанавливаете в него, и интерпретирует его в текущем часовом поясе сеанса для вычисления внутреннего представления относительно 1/1 /1970 00:00:00 UTC. Когда столбец отображается, он будет преобразован обратно для отображения в зависимости от часового пояса текущего сеанса. Полезно думать о TIMESTAMP как о принятии значения, которое вы устанавливаете, и преобразовании его из часового пояса текущего сеанса в UTC для сохранения, а затем обратном преобразовании в часовой пояс текущего сеанса для отображения.
Если мой сервер находится в Сан-Франциско, но я провожу мероприятие в Нью-Йорке, которое начинается 01.09.1029 в 20:00, я бы использовал TIMESTAMP для хранения времени начала, установите часовой пояс сеанса на «Америка/Нью-Йорк» и установите время начала на «2009-09-01 20:00:00». Если я хочу знать, произошло событие или нет, независимо от настройки часового пояса текущего сеанса, я могу сравнить время начала с NOW() . Конечно, для осмысленного отображения потенциальному покупателю I потребуется
ОГРАНИЧЕНИЕ TIMESTAMP
Тип TIMESTAMP
имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC и так далее это может быть непригодно для вашего конкретного приложения. В этом случае вам придется использовать тип DATETIME
. Вы, конечно, всегда должны быть обеспокоены тем, что часовой пояс текущего сеанса установлен правильно всякий раз, когда вы используете этот тип с функциями даты, такими как
.
Сатья описала различия между ними. Для вашей практики вы можете использовать datetime
, чтобы сохранить вывод NOW()
.
Например:
СОЗДАТЬ ТАБЛИЦУ Заказы ( OrderId int NOT NULL, ProductName varchar(50) НЕ NULL, OrderDate datetime NOT NULL DEFAULT NOW(), ПЕРВИЧНЫЙ КЛЮЧ (OrderId) )
Вы можете прочитать больше на сайте w3schools.
0В более коротком объяснении
ДАТА :
ДАТА
хранит значение даты в формеГГГГ-ММ-ДД
(год -месяц-день). не хранит время .ВРЕМЯ :
ВРЕМЯ
хранит значение времени в формеЧЧ:ММ:СС
(часы-минуты-секунды). Не сохраняет дату.ДАТАВРЕМЯ :
DATETIME
сохраняет значение даты и времени в формеГГГГ-ММ-ДД ЧЧ:ММ:СС
.