SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.04.2010 10:32:33

wawa
Участник
Зарегистрирован: 06.04.2010
Сообщений: 6

TIMESTAMP vs DATETIME

Здравствуйте,

при апгрейде трекера на более новую версию, возник конфликт типов в базе.
В старой версии формат полей для даты-времени был DATETIME.
В новой - TIMESTAMP.
Инсталлер проагрейдил таблицы, тип столбцов изменился на TIMESTAMP, все верно.

Но теперь при работе трекера возникает ошибка:

Incorrect datetime value: '1270533609' for column 'timestamp' at row 1 for the query:
INSERT INTO mantis_tokens_table ( type, value, timestamp, expiry, owner ) VALUES ( ?, ?, ?, ?, ? )


Попробовал вручную писать в столбцы TIMESTAMP.
В формате '2010-03-01' жрет.
А значения типа '1270533609' - отказывается.

Подскажите, пожалуйста, в чем ошибка?

Неактивен

 

#2 06.04.2010 12:01:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: TIMESTAMP vs DATETIME

wawa написал:

Инсталлер проагрейдил таблицы, тип столбцов изменился на TIMESTAMP, все верно.

Этого как раз и не произошло. Ошибка указывает на то, что столбец с названием timestamp имеет тип datetime.

Неактивен

 

#3 06.04.2010 15:01:37

wawa
Участник
Зарегистрирован: 06.04.2010
Сообщений: 6

Re: TIMESTAMP vs DATETIME

да вроде правильно: timestamp.
см. скриншот.

http://s39.radikal.ru/i084/1004/50/3a34edacd83c.jpg

Неактивен

 

#4 06.04.2010 16:18:29

Cristoff666
Участник
Зарегистрирован: 02.04.2010
Сообщений: 1

Re: TIMESTAMP vs DATETIME

тогда это странно, вроде всё должно быть в порядке

Неактивен

 

#5 06.04.2010 23:43:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: TIMESTAMP vs DATETIME

Честно говоря, не понятно, что у Вас за код такой. MySQL понимает даты
(независимо, TIMESTAMP или DATETIME) в двух форматах: '2010-03-01' и
20100301. Отличаются они кавычками и знаками между числами. В Вашем
случае Вы пытаетесь вставить в TIMESTAMP 1270 год, что приводит к
непониманию, т.к. в TIMESTAMP даты до 1970 года не помещаются (а в
DATETIME помещаются и это основное их отличие):

Код:

test > CREATE TABLE a (a TIMESTAMP);
Query OK, 0 rows affected (0.03 sec)

test > INSERT INTO a VALUES (20101010);
Query OK, 1 row affected (0.00 sec)

test > INSERT INTO a VALUES (12701010);
ERROR 1292 (22007): Incorrect datetime value: '12701010' for column 'a' at row 1
test > ALTER TABLE a MODIFY a DATETIME;
Query OK, 1 row affected (0.08 sec)
Records: 1  Duplicates: 0  Warnings: 0

test > INSERT INTO a VALUES (12701010);
Query OK, 1 row affected (0.00 sec)

Подозреваю, что в коде где-то забыли добавить FROM_UNIXTIME().

Неактивен

 

#6 07.04.2010 18:28:23

wawa
Участник
Зарегистрирован: 06.04.2010
Сообщений: 6

Re: TIMESTAMP vs DATETIME

Спасибо за подсказку.
Выяснил, что upgrade базы не сработал должным образом.
По задумке разработчиков, типы DATETIME должны быть преобразованы в INT(10). По всем таблицам.
Но они остались прежними.
Буду разбираться дальше.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson