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

  • Автор темы Автор темы berkut
  • Дата начала Дата начала

berkut

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

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

-~{}~ 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, то всё нормально. Что за дела такие?
 
MySQL не проверяет правильность дат, поэтому обработка таких ситуаций лежит на тебе.
 
я это читал уже, перечитал вновь и не нашёл ответа. там сказано: величины типа TIMESTAMP могут принимать значения от начала 1970 года до некоторого значения в 2037 году
70.01.01 - удовлетворяет этим и остальным правилам
 
berkut
Читай указанную ForJest ссылку особо внимательно начиная со слов:

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

-~{}~ 25.09.05 15:25:

>>как строка в формате 'YYYY-MM-DD' или в формате 'YY-MM-DD'. Здесь также допустим ``облегченный'' синтаксис. Например, величины '98-12-31', '98.12.31', '98/12/31' и '98@12@31' являются эквивалентными.
 
в виде строки CHAR(8))
Лучше вставлять в правильном формате 'YYYY-MM-DD'
И вообще в твоем случае нужно добавить нормальное
поле DATE
написать сккрипт который положит в него данные из
CHAR(8) в формате 'YYYY-MM-DD'
удалит старое поле CHAR(8)
 
admin дык уже сделал поле TIMESTAMP, вот тут уже долго и упорно обсуждаем, почему при вставке в это поле 70.01.01 - вставляется NULL
 
berkut
тебе нужен не timestamp, а date
а глюк, скорее, всего, из-за разности часовых поясов.
 
Сверху