![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выбор значения из поля типа TimeStamp с помощью Case [FB1.5]
VadimKV © (2004-10-21 16:08:00)Среда FB1.5 (Dialect 3), IBExpert.
Подскажите кто знает. Почему если выбирать значение из поля типа TimeStamp обычным способом, то значение отабражается так же как в Grid. А если выбирать тоже самое поле через Case, то формат отабражения даты меняется.
В меню Environment Options -> Grid -> Displai Format (IBExpert) установлено dd.mm.yyyy hh:mm.
Пример: обычно - 08.09.2004 00:00,
Dialect3 через Case - 2004-09-08 00:00:00.0000
Dialect1 через Case - 8 aug 2004 (в данный момент не интересует)
select r.createddate
,case
when sys.rdb$field_name = 'CREATEDDATE'
then r.createddate
... ... ...
и т.д.
Johnmen (2004-10-22 09:35:00) [1]Похоже у тебя серьезные проблемы с проектированием.
Рекомендую в этом направлении решать проблемы...
VadimKV (2004-10-22 09:31:00) [2]Нужно это для того, что бы данные хранились в одинаковом виде.
Пример поля типя TimeStamp заполняются в виде
'1.10.2004', делая запрос select fldTimeStamp ... будет возвращено значение '1.10.2004'.
Если Я делаю какие либо обработки данных запросом вида
insert into ...
select case
when sys.rdb$field_name = 'CREATEDDATE' then r.createddate
when sys.rdb$field_name = 'NAMEREF' then r.nameref
... ... ...
, то в БД данные будут храниться ввиде '2004-09-08', это же значение далее будет возвращать Select ...
Johnmen (2004-10-22 09:20:00) [3]Ну что тут непонятного ? Всё очевидно !
И вообще, зачем это тебе ?
VadimKV (2004-10-22 09:17:00) [4]THEN CAST(... AS TIMESTAMP)
Так я уже пробавал пробавал, не помагает.
Есть конечно крайний вариант через Extract(...).
Но все равно не понятно почему так происходит, и можно ли вообще это исправить.
Johnmen (2004-10-22 09:13:00) [5]Хотя можешь попробовать
THEN CAST(... AS TIMESTAMP)
THEN CAST(... AS TIMESTAMP)
Johnmen (2004-10-22 09:11:00) [6]>поля разных типов.
Вот ты и сам ВСЁсказал !
Про исх. коды была шутка...:)
VadimKV (2004-10-22 09:08:00) [7]Весь Case, взять в cast не могу, потомучно много when и поля разных типов.
r.createddate timestamp
r.nameref varchar, integer и т.д.
А точно, что нужно зделать с этой фичей неизвестно?
Честно, в исходных кодах, Я незнаю что искать и что там править.
Если можите подсказать, то большое спасибо.
Кто муже, почему в исходных кодах IBExpert, ведь эту настройку должен хранить сервер FB1.5 наверное.
Johnmen (2004-10-21 17:27:00) [8]
> VadimKV (21.10.04 16:45) [3]
1.
>Весь Case, взять в cast не могу, потомучно много
Ну что ? Как "множество" влияет на "невозможность" ?
2.
>r.createddate
>r.nameref
Какого типа поля ?
3.
>Когда и как его можно определить ...
Так это фича программы под назв. IBExpert. См. её исх.коды :)))
VadimKV (2004-10-21 16:45:00) [9]Sandman25Весь Case, взять в cast не могу, потомучно много
... ... ...
when sys.rdb$field_name = 'CREATEDDATE' then r.createddate
when sys.rdb$field_name = 'NAMEREF' then r.nameref
... ... ...
Johnmen- "А когда он уже определен...".
Когда и как его можно определить нужным образом, что бы Case выводил этот тип нормально?
Sandman25 (2004-10-21 16:25:00) [10]cast(case (...) as НУЖНЫЙ ТИП)
Johnmen (2004-10-21 16:25:00) [11]Думается, потому, что предопределить тип значения, получаемого применением case проблематично. А когда он уже определен, то к нему уже позно применять маски, и он выводится "как есть" .
Для полей этой проблемы нет.