Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: два TIMESTAMP в одной таблице
 
 автор: Eugene77   (27.12.2007 в 19:34)   письмо автору
 
 

Не будет ли конфликта если в одной таблице заветси два поля с типом 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, там у меня будет хранится совсем другая дата. Но вот не получается...
В чём дело? Кто знает?

   
 
 автор: Trianon   (27.12.2007 в 22:54)   письмо автору
 
   для: Eugene77   (27.12.2007 в 19:34)
 

default нужно указать.

   
 
 автор: Eugene77   (28.12.2007 в 18:45)   письмо автору
 
   для: 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

   
 
 автор: Trianon   (28.12.2007 в 19:37)   письмо автору
 
   для: Eugene77   (28.12.2007 в 18:45)
 

это что за день такой нулевое число нулевого месяца?
Таймштамп должен попадать в интервал эпохи UNIX

   
 
 автор: Eugene77   (29.12.2007 в 18:18)   письмо автору
 
   для: 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'

   
 
 автор: Trianon   (29.12.2007 в 19:30)   письмо автору
 
   для: Eugene77   (29.12.2007 в 18:18)
 

А сейчас в этом поле что лежит? Похоже, явно что-то отличное от даты-времени.

   
 
 автор: Eugene77   (30.12.2007 в 18:42)   письмо автору
 
   для: Trianon   (29.12.2007 в 19:30)
 

Там у меня лежал INT, который содержал время. Теперь вижу, что он не даёт преобразованию пройти. Новая таблица создаётся без проблем.
Но так я и не понял сколько байт занимает этот TIMESTAMP?!

Спасибо за поддержку!

   
 
 автор: Trianon   (31.12.2007 в 02:07)   письмо автору
 
   для: Eugene77   (30.12.2007 в 18:42)
 

создайте еще один столбец.
Заполните его как SET t2 = FROM_UNIXTIME(t1)

   
 
 автор: Eugene77   (02.01.2008 в 18:30)   письмо автору
 
   для: 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.

В общем, проблемы у меня с добычей достоверной информации по этому полю.
Какого оно размера?
Какой диапазон значений?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования