сравнение строк(дат) 25.07.05 > 26.07.05

berkut

Новичок
сравнение строк(дат) 25.07.05 > 26.07.05

Есть табличка, так-уж исторически сложилось, что даты в ней хранятся в таком виде: 25.07.05(в виде строки CHAR(8))
Возникла необходимсость удалять старые записи, но возник вопрос, на сколько это безопасно?
Код:
DELETE FROM tbl WHERE date < '04.08.05'
Не получится-ли так, что поудаляется не то что нужно? Среди дат, нет меньше 2000 - го года. Как вообще муська сравнивает такие строки?
 

berkut

Новичок
вообще в прострации
ууу, какой ужас, так не работает. может

-~{}~ 25.09.05 03:06:

вот странность. Создаю столбец `date` TIMESTAMP(6) NOT NULL
INSERT INTO tbl (date) VALUES ('70.01.01')
Вставляет NULL!?
Если изменить дату, например 70.01.02 или 70.02.01, то всё нормально. Что за дела такие?
 

uchenik

Новичок
MySQL не проверяет правильность дат, поэтому обработка таких ситуаций лежит на тебе.
 

berkut

Новичок
я это читал уже, перечитал вновь и не нашёл ответа. там сказано: величины типа TIMESTAMP могут принимать значения от начала 1970 года до некоторого значения в 2037 году
70.01.01 - удовлетворяет этим и остальным правилам
 

alexhemp

Новичок
berkut
Читай указанную ForJest ссылку особо внимательно начиная со слов:

Величины DATETIME, DATE и TIMESTAMP могут быть заданы любым стандартным набором форматов:
...
Где я поставил троеточие - по русски сказано как нужно задавать даты.
 

berkut

Новичок
да я уже 4 раза от начала и до конца? прочитал эту страницу.

-~{}~ 25.09.05 15:25:

>>как строка в формате 'YYYY-MM-DD' или в формате 'YY-MM-DD'. Здесь также допустим ``облегченный'' синтаксис. Например, величины '98-12-31', '98.12.31', '98/12/31' и '98@12@31' являются эквивалентными.
 

confguru

ExAdmin
Команда форума
в виде строки CHAR(8))
Лучше вставлять в правильном формате 'YYYY-MM-DD'
И вообще в твоем случае нужно добавить нормальное
поле DATE
написать сккрипт который положит в него данные из
CHAR(8) в формате 'YYYY-MM-DD'
удалит старое поле CHAR(8)
 

berkut

Новичок
admin дык уже сделал поле TIMESTAMP, вот тут уже долго и упорно обсуждаем, почему при вставке в это поле 70.01.01 - вставляется NULL
 

Фанат

oncle terrible
Команда форума
berkut
тебе нужен не timestamp, а date
а глюк, скорее, всего, из-за разности часовых поясов.
 
Сверху