Выполняю запрос на создание таблицы
CREATE TABLE tms (ts1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ts2 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Выдает ошибку, что получается нельзя использовать два поля TIMESTAMP в одной таблице??? или я что то не то написал????
Просто не хочется метки времени реализовывать на php...
LinuxForum.Fans
Вопрос по timestamp в mysql
Автор: astalavista
4 сообщений
2148 просмотров
astalavista, повторил ваш запрос:
text
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clausethere can be only one TIMESTAMP column
А как кроме timestamp можно сделать столбец чтобы автоматически ставилась дата создания строки?
использовать функции в запросах SQL
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
на русском
http://mysql.ru/docs/mysql-man-4.0-ru/reference.html#date-and-time-functions
о типах полей для хранения времени и дат
http://mysql.ru/docs/mysql-man-4.0-ru/reference.html#date-and-time-types
Существуют следующие типы данных даты и времени: DATETIME, DATE, TIMESTAMP, TIME и YEAR. Каждый из них имеет интервал допустимых значений, а также значение ``ноль'', которое используется, когда пользователь вводит действительно недопустимое значение. Отметим, что MySQL позволяет хранить некоторые не вполне достоверные значения даты, например 1999-11-31. Причина в том, что, по нашему мнению, управление проверкой даты входит в обязанности конкретного приложения, а не SQL-серверов. Для ускорения проверки правильности даты MySQL только проверяет, находится ли месяц в интервале 0-12 и день в интервале 0-31. Данные интервалы начинаются с 0, это сделано для того, чтобы обеспечить для MySQL возможность хранить в столбцах DATE или DATETIME даты, в которых день или месяц равен нулю. Эта возможность особенно полезна для приложений, которые предполагают хранение даты рождения - здесь не всегда известен день или месяц рождения. В таких случаях дата хранится просто в виде 1999-00-00 или 1999-01-00 (при этом не следует рассчитывать на то, что для подобных дат функции DATE_SUB() или DATE_ADD дадут правильные значения).
Ниже приведены некоторые общие соображения, полезные при работе с типами данных даты и времени:
MySQL извлекает значения для данного типа даты или времени только в стандартном формате, но в то же время пытается интерпретировать разнообразные форматы, которые могут поступать от пользователей (например, когда задается величина, которой следует присвоить тип даты или времени или сравнить со значением, имеющим один из этих типов). Тем не менее, поддерживаются только форматы, описанные в следующих разделах. Предполагается, что пользователь будет вводить допустимые значения величин, так как использование величин в других форматах может дать непредсказуемые результаты.
Хотя MySQL пытается интерпретировать значения в нескольких форматах, во всех случаях ожидается, что крайним слева будет раздел значения даты, содержащий год. Даты должны задаваться в порядке год-месяц-день (например, '98-09-04'), а не в порядке месяц-день-год или день-месяц-год, т.е. не так, как мы их обычно записываем (например '09-04-98', '04-09-98').
MySQL автоматически преобразует значение, имеющее тип даты или времени, в число, если данная величина используется в числовом контексте, и наоборот.
Значение, имеющее тип даты или времени, которое выходит за границы установленного интервала или является недопустимым для этого типа данных (см. начало раздела), преобразуется в значение ``ноль'' для данного типа. (Исключение составляют выходящие за границы установленного интервала величины типа TIME, которые усекаются до соответствующей граничной точки заданного интервала TIME). В следующей таблице представлены форматы значения ``ноль'' для каждого из типов столбцов:
Тип столбца Значение ``Ноль''
DATETIME '0000-00-00 00:00:00'
DATE '0000-00-00'
TIMESTAMP 00000000000000 (длина зависит от количества выводимых символов)
TIME '00:00:00'
YEAR 0000
Значения ``ноль'' - особые. Для их хранения или ссылок на них можно явно применять представленные в таблице значения, а можно использовать ‘0’ или ‘0’, что легче в написании.
Значения ``ноль'' даты или времени при использовании MyODBC автоматически конвертируются в NULL в версии MyODBC 2.50.12 и выше, так как ODBC не оперирует с подобными величинами.
Войдите или зарегистрируйтесь, чтобы ответить.