Доброго времени суток! Сразу же непосредственно к сабжу.
На 8.0 осуществлял поиск по полям с датой следующим образом:
SELECT....
FROM....
WHERE.... and viewName."столбецName" LIKE 'гггг-мм-дд'
где гггг - год, мм - месяц, дд - день, а viewName."столбецName" - есть поле дат.
Допустим надо найти всех 'дядек', у ктоторых что-то там в феврале, имеем шаблон для поиска: ...LIKE '____-02-__'.
Итак, 8.0 всё корректно возвращает, а 8.3 ругается
Ошибка типа:
ERROR: operator does not exist: date ~~ unknown
LINE 3: where viewName."столбецName" like '____-__-__'
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
как быть? подскажите...
Ужас! Есть же
Ужас! Есть же функции для работы с датами - пользуйтесь ими. Мне даже предположить трудно НАСКОЛЬКО у вас тормозило!
Вообще использовать LIKE на поля типа DATE абсолютно неправильно! То что при выборке вы видите символьное представление 'ГГГГ-ММ-ДД' вовсе не означает, что внутри оно так и хранится. Возможно внутренняя логика поменялась и как следствие перестало работать.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
Выше сказали
Выше сказали совершенно верно,
если очень хочется оставить все как есть,
приводите явно дату к строке,
to_char
Спасибо,
Спасибо, действительно гляну документацию - to_char идеальный вариант в моём лучае..
Имеем дату формата 'XX.YY.ZZ г.'. Дату можно возвращать из базы вообще как угодно
Но гораздо
Но гораздо прямее было бы не использовать ни to_char ни LIKE
Если надо что-то в феврале 2008, то не надо никаких шаблонов. Простейшее сравнение
WHERE "дата" >= '01-02-2008' AND "дата" <'01-03-2008'
если по "дата" построен индекс, работать будет в разы быстрее.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
а еслу вдруг
а еслу вдруг нужно найти всех, у кого день рожденье именно в 'июне', но совсем не важно в каком году...? а если надо увидеть людей, которые родились именно 15ого числа 1975 года, но всё равно в каком месяце ?:) только поискам по подстрокам...увы))
А доку почитать
А доку почитать слабо?
http://www.postgresql.org/docs/8.3/interactive/functions-datetime.html
а если вдруг нужно найти всех, у кого день рожденье именно в 'июне', но совсем не важно в каком году...?
а если надо увидеть людей, которые родились именно 15ого числа 1975 года,
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
точно)
точно)