powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / конверт blob->date??
8 сообщений из 8, страница 1 из 1
конверт blob->date??
    #38579538
barrac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как победить конверт blob->date?

Есть табличка x(id varchar,param varchar,val blob)
в блобе лежат и даты и цыфры и текст

Код: sql
1.
2.
3.
select  y.id,cast(val as date) data from x
inner join y on y.id=x.id
where param='par'



все хорошо!

Код: sql
1.
2.
3.
select  y.id,cast(val as date) data from x
inner join y on y.id=x.id
where param='par' and cast(val as date) between :DS end :DE



получаю conversion error from string
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579547
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты не можешь полагаться на порядок вычисления предикатов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579548
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrac,
Ну так прежде чем проверить сервер пытается откастовать
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579563
barrac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну меня больше интересует как решить проблему, а не почему выходит ошибка, и на что можно полагаться. работаю в чужой системе и нечего менять не дадут, а задачу решать надо!

построил вот такой километровый "рабочий" геморой:

Код: sql
1.
2.
3.
4.
5.
right(iv.val,4)||left(right(iv.val,7),2)||left(iv.val,2) 
between
right(cast(:DATESTART as varchar(10)),4)||left(right(cast(:DATESTART as varchar(10)),7),2)||left(cast(:DATESTART as varchar(10)),2)
and 
right(cast(:DATEEND as varchar(10)),4)||left(right(cast(:DATEEND as varchar(10)),7),2)||left(cast(:DATEEND as varchar(10)),2)


по русски переворачиваю строчку 01.02.2003 в 20030201 поле и два параметра диапазона

и что-то вот не нашел аналога MS SQL функции convert(varchar(10),data,x) где х - формат даты,
т.е. вопрос можно ли на FB как то привести 01.02.2003 к формату '2003-02-01' ??
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579567
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrac> вопрос можно ли на FB как то привести <skipped>

Конечно, можно. Зависит от того, что нужно, для чего и как лучше.
Дату (в т.ч. любое её строкове представление и формат) всегда можно
привести к любому нужному строковому представлению/формату.

RTFM Extract, Substring, || и т.д.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579574
barrac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я щас так и сделал, но я имел ввиду функцию, вот так же гораздо более читабельно:
Код: sql
1.
convert(varchar(10),data,x) between convert(varchar(10),:DS,x)  and convert(varchar(10),:DE,x) 


чем, то что писал выше.
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579578
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barracменя больше интересует как решить проблему
Для начала попробуй обернуть проверку param в derived table. Может, оптимизатор при
проталкивании условия таки получит нужный порядок вычисления.

barracвопрос можно ли на FB как то привести 01.02.2003 к формату '2003-02-01'

YYYY-MM-DD это стандартный формат строки даты в SQL. Именно в него переводится дата в
третьем диалекте функцией cast. Каким раком ты получил DD.MM.YYYY - уму нерастяжимо.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
конверт blob->date??
    #38579586
barrac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо )))
дата лежит в поле типа blob в формате '01.02.2003'
функция cast(poleblob as date) =01.02.2003
а вот cast(cast(poleblob as date) as varchar(10))='2003-02-01'
я сразу с результатом кастования в дату сравнивал, и получал еррор, так сделать недодумался.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / конверт blob->date??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]