|
|
|
| Не будет ли конфликта если в одной таблице заветси два поля с типом TIMESTAMP?
Вроде не должно, но вот такой запрос не прохоит:
SQL-запрос:
ALTER TABLE `a_login` CHANGE `ban` `ban` TIMESTAMP( 6 ) NOT NULL
Ответ MySQL:
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
|
Я ведь не делаю второе поле с текущим CURRENT_TIMESTAMP in DEFAULT, там у меня будет хранится совсем другая дата. Но вот не получается...
В чём дело? Кто знает? | |
|
|
|
|
|
|
|
для: Eugene77
(27.12.2007 в 19:34)
| | default нужно указать. | |
|
|
|
|
|
|
|
для: Trianon
(27.12.2007 в 22:54)
| | >default нужно указать.
SQL-запрос:
ALTER TABLE `a_login` CHANGE `ban` `ban` TIMESTAMP( 6 ) NOT NULL DEFAULT "1000-00-00 10:00:00"
Ответ MySQL:
#1067 - Invalid default value for 'ban'
SQL-запрос:
ALTER TABLE `a_login` CHANGE `ban` `ban` TIMESTAMP( 6 ) NOT NULL DEFAULT "0000-00-00 00:00:00"
Ответ MySQL:
#1292 - Incorrect datetime value: '0' for column 'ban' at row 1
SQL-запрос:
ALTER TABLE `a_login` CHANGE `ban` `ban` TIMESTAMP( 6 ) NOT NULL DEFAULT 0
Ответ MySQL:
#1292 - Incorrect datetime value: '0' for column 'ban' at row 1 | |
|
|
|
|
|
|
|
для: Eugene77
(28.12.2007 в 18:45)
| | это что за день такой нулевое число нулевого месяца?
Таймштамп должен попадать в интервал эпохи UNIX | |
|
|
|
|
|
|
|
для: Trianon
(28.12.2007 в 19:37)
| | SQL-запрос:
ALTER TABLE `a_login` CHANGE `ban` `ban` TIMESTAMP( 6 ) NOT NULL DEFAULT '2000-01-01 01:01:01'
Ответ MySQL:
#1292 - Incorrect datetime value: '0' for column 'ban' at row 1
SQL-запрос:
ALTER TABLE `a_login` CHANGE `ban` `ban` TIMESTAMP( 6 ) NOT NULL DEFAULT 1000000
Ответ MySQL:
#1067 - Invalid default value for 'ban' | |
|
|
|
|
|
|
|
для: Eugene77
(29.12.2007 в 18:18)
| | А сейчас в этом поле что лежит? Похоже, явно что-то отличное от даты-времени. | |
|
|
|
|
|
|
|
для: Trianon
(29.12.2007 в 19:30)
| | Там у меня лежал INT, который содержал время. Теперь вижу, что он не даёт преобразованию пройти. Новая таблица создаётся без проблем.
Но так я и не понял сколько байт занимает этот TIMESTAMP?!
Спасибо за поддержку! | |
|
|
|
|
|
|
|
для: Eugene77
(30.12.2007 в 18:42)
| | создайте еще один столбец.
Заполните его как SET t2 = FROM_UNIXTIME(t1) | |
|
|
|
|
|
|
|
для: Trianon
(31.12.2007 в 02:07)
| | >создайте еще один столбец.
>Заполните его как SET t2 = FROM_UNIXTIME(t1)
Здорово, но давайте в всё-таки разберёмся с TIMESTAMP.
Вот что я прочитал:
TIMESTAMP - поле хранит дату и время последнего изменения записи. Это значит, что, добавив в таблицу поле типа TIMESTAMP (например, воспользовавшись конструкцией ALTER TABLE table_name ADD COLUMN column_name TIMESTAMP), Вы, не производя никаких изменений поля типа TIMESTAMP, будете в нем иметь время последней операции с записью, влияющей на содержимое строки таблицы.
Это правда? Я почему-то решил, что для того, чтобы хранилась последняя дата надо указывать ON UPDATE CURRENT_TIMESTAMP.
В общем, проблемы у меня с добычей достоверной информации по этому полю.
Какого оно размера?
Какой диапазон значений? | |
|
|
|