powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird-1.5 поле типа date - как сравнивать с числом?
25 сообщений из 25, страница 1 из 1
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434329
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перевожу базу данных с MsSql на Firebird
непонятно одна странность

почему не работает запрос типа
select
case when dataWork=0 then '' else
cast(EXTRACT(DAY FROM dataWork) as varchar(2))||'.'||cast(EXTRACT(MONTH FROM dataWork) as varchar(2))||'.'||cast(EXTRACT(YEAR FROM dataWork) as varchar(4)) end as strdataWork
from ....

говорит что не может 0 перевести в строку.

и вообще у меня какие-то проблеммы с датой. Ведь она надеюсь храниться как float?
так почему нельзя писать select *from ... where DataLoad=0
если переконвертить в строку тип dd.mm.yyyy то понимает
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434333
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пиши

Код: plaintext
select *from ... where case (DataLoad as double precision)= 0 


и будет тебе руль... ;))
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434336
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, прошу прощения.

не CASE а CAST
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434356
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нету мне руля :)

Overflow occurred during data type conversion error from string '12-DEC-2003'
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434368
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
case when dataWork=0 then '' else ... Может быть, when dataWork is NULL? а то как-то странно получается, 0 - тоже вполне реальная дата
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434398
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня поля в базе not null
я знаю что реальная. но в данном случае служебная :)
те если 0 - то и нет нечего - я понимаю что может это не совсем верно - но вообшем приемлеммо

почему не работает

select *from ... where DataLoad=3432

не работает в ibExpert и в приложение delphi
предлагает конвертнуть в строку :(
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434401
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Katy
А datawork у тебя часом не строка? :)
Тогда рекомендую cast(cast(datawork as date) as double precision)=0
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434423
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напугал :) думала вдруг и правда при переносе че нить не то случилось

CREATE TABLE TWORKORDER (
IDW INTEGER NOT NULL,
IDO INTEGER NOT NULL,
DATAWORK DATE NOT NULL,
IDTW INTEGER NOT NULL,
KCELL INTEGER NOT NULL,
FPLACE INTEGER NOT NULL,
FOK INTEGER NOT NULL,
COMMENT VARCHAR(500) CHARACTER SET NONE NOT NULL,
MONEY DOUBLE PRECISION NOT NULL,
FVISIBLE INTEGER NOT NULL,
WEIGHT INTEGER NOT NULL,
SQUARE DOUBLE PRECISION NOT NULL,
FRECAST INTEGER NOT NULL,
FEARN INTEGER NOT NULL
);

ALTER TABLE TWORKORDER ADD CONSTRAINT PK_TWORKORDER PRIMARY KEY (IDW);

select * from tworkorder where datawork=333

выдает ту ошибку которую я писала... бред какой-то... может настройки сервера какие-то нужны?
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434434
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from tworkorder where cast(datawork as double precision)=3333

это ситуации не меняет
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434533
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
when dataWork=cast('31-DEC-1899' as DATE) then '' else ... тогда уж...
или dataWork=cast(0 as DATE)
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434582
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from tworkorder where dataWork=cast(333 as DATE)

опять вместо 333 хочет видит строку
я просто не понимаю - если data это число типа float то почему он не понимает 333 и

select * from tworkorder where dataWork=cast('01.01.2004' as DATE)
вот такое проходит

просто после общения с MsSql - где формат даты зависит от пользователя как то неприятно дату строкой передавать :(
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434667
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Kull Damned

С каких пор кастом можно преобразовывать датавременные типы к числовым и наоборот ???

...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434689
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, прогнал... Думал, что FB как и M$-SQL так умеет... %)) Что ж, тогда собственную UDF рисовать...
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434699
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще, не в тему... Johnmen, ты еще не задолбался эту картинку везде совать? Шутка повторенная n раз становится не шуткой а бредом...
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434768
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извините но помоему это явный глюк.
ну не может быть что только мне понадобилось дату как число передать

или я не понимаю глобального смысла ???
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434783
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эта... а зачем к числу-то?
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434794
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Kull Damned

Не, не задолбался... :) Она сама вставляется, ибо моё изображение
А вообще-то она заменяет знак и имеет тот же смысл...
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434805
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что тип data - это число с плавающей точкой
и если на клиенте переводить в строку, то этож должно быть связанно с форматированием строки.
те например MsSql понимает строку как дату в зависимости от языковых настроек пользователя.
если переводить на клиенте - то от языковых настроек системы.

по моему гораздо логичнее использовать число....

хотя если это не мои глюки - а так и положено то и ладно - буду привыкать :)
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434806
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Katy

>Сообщений: 30 извините но помоему это явный глюк.

Не извиним, т.к. не глюк :)

>ну не может быть что только мне понадобилось дату как число передать

Разложи на составные численные части и собери в какое хочешь численное значение...

>или я не понимаю глобального смысла ???

Видимо...
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434818
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Разложи на составные численные части и собери в какое хочешь численное значение

что это означает, пример привиди пожалуйста
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434860
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katy, да напиши UDF'ку простецкую и не напрягайся... ;))
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434871
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> и если на клиенте переводить в строку, то этож должно быть связанно с форматированием строки.
те например MsSql понимает строку как дату в зависимости от языковых настроек пользователя.

ну не знаю, у нас в джаве можно указать, какую локаль использовать для преобразования даты в строку, пользовательскую или конкретную en|en, например
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434875
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katy
авторизвините но помоему это явный глюк.

Все очень просто: (Language Reference)

CAST( )
Converts a column from one datatype to another.

From datatype class -> To datatype class

Date -> character, varying character, timestamp
Time -> character, varying character, timestamp

ОТСЮДА СЛЕДУЕТ ТОЛЬКО ОДНО:
авторKaty, да напиши UDF'ку простецкую и не напрягайся... ;))

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434885
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Katy

Получаем день, месяц и т.д. в численном выражении. Дальше всё это определнным образом суммируем по "календарному" алгоритму с учетом "нулевого" в твоем понимании года... :)

>Kull Damned
>Katy, да напиши UDF'ку простецкую и не напрягайся... ;))

Простецкой она не будет. Особенно по соглашению о передачи параметров различных типов и их преобразованию...
...
Рейтинг: 0 / 0
Firebird-1.5 поле типа date - как сравнивать с числом?
    #32434890
Фотография Katy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kull Damned

да ладно мне вообшем к счастью с этой прогой долго возиться не придеться - просто бета версия нужна была - щас строкой уже сделала.

хотелось принцип понять. :)

в MsSql тоже можно изменить формат перед запросом
и замете я про cast не спрашивала - вопрос был в том : почему тип data (который на самом деле число) по умолчанию нормально сравниваеться со строкой - а с числом глючит. Думала мот в синтаксисе заморочка :)

ну раз так и должно быть - то и ладно.

кстате про udf - тут можно написать UDF не как внешнюю
те например в том же MsSql я могу на T-Sql написать выборку из справочника

CREATE function dbo.Client2Fio(@idClient int)
RETURNS char(255)
Begin
declare @fio char(255)
set @fio=isnull((select fio from nsiClient where idClient=@idClient), '')
return @fio
end

а потом в запрсах писать select dbo.Client2Fio(idClient) from torder
сдесь мне приходиться писать

select select fio from nsiClient where idClient=torder.idClient) from torder
и так в 20 запросах :)

Мне уже убегать нужно... Спасибо всем за помош :)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird-1.5 поле типа date - как сравнивать с числом?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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