Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 23 24 25 26 27 28 29 [30] 31 32   вперед  Ctrl
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31197

не я это выражение придумал.
взято из
https://www.ibase.ru/files/firebird/Firebird_Language_Reference_Update_25_rus.pdf

в любом случае, что-то с этим делать надо.
ибо это совсем не ЭТО (С)

Posted via ActualForum NNTP Server 1.5

15 ноя 19, 13:50    [22017153]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
Мимопроходящий,

я подумаю как об этом написать
15 ноя 19, 14:02    [22017175]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Мимопроходящий
по результатам сегодняшнего флуда в дельфийском форуме:
https://www.sql.ru/forum/actualthread.aspx?tid=1319034

надо бы при описании литералов 'NOW', 'TODAY' и т.п.,
везде где можно указать, что сокращённое приведение типов
(timestamp'NOW', date'TODAY' и т.п.) выполняется единожды,
на момент препарирования запроса, или компиляции (вьюхи, SP, триггера)
и в дальнейшем хрен меняется, в отличие от правоверного
CAST('NOW' as timestamp), CAST('TODAY' as date) и т.п.

а то приходят деревенские и начинают брюкву сеять...

Так есть же. Именно в этой доке.

К сообщению приложен файл. Размер - 31Kb
15 ноя 19, 14:09    [22017203]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31197

15.11.2019 14:09, ёёёёё пишет:
> Так есть же. Именно в этой доке.

не там где нужно.
этот текст обособлен в отдельную главу
"Сокращённое приведение типов даты и времени".
а надо бы в туда где описание литералов NOW, TODAY и т.п.

Posted via ActualForum NNTP Server 1.5

15 ноя 19, 14:25    [22017248]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Мимопроходящий,

так и там есть. Но да, надо бы поподробнее.

К сообщению приложен файл. Размер - 62Kb
15 ноя 19, 14:33    [22017262]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
Таки почитал что есть в документации. Ну уж не знаю, вроде понятное предупреждение было.
Ладно дописал одно предложение и перекрётстную ссылку повесил
18 ноя 19, 10:49    [22018494]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Симонов Денис,
Примечание
Поскольку 'NOW' всегда возвращает актуальные значения даты и времени при использовании
CAST() для приведения типов данных она может использоваться для измерения временных
интервалов и скорости выполнения кода в процедурах, триггерах и блоках кода
PSQL. Будьте внимательны при использовании 'NOW', т.к. использование сокращённого
преобразования типов 'NOW' оценивается во время синтаксического анализа, а затем время
её "замораживается", даже при многократном выполнении кода.


имхо, ещё непонятнее стало. :(


Может, примерчики добавишь?

/* Возвращает время на момент выполнения запроса */
select time 'now' from RDB$DATABASE;

/* Возвращает время на момент компиляции запроса */
SELECT  time 'NOW' FROM rdb$database; 

/* Возвращает время на момент создания процедуры */
create or alter procedure GET_CREATING_PROCUDURE_TIME 
returns (
    CREATING_TIME time)
as
begin
  CREATING_TIME = time 'NOW';
  suspend;
end
18 ноя 19, 11:06    [22018505]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
ёёёёё,

хорошо, я поэкспериментирую и внесу разъяснения.
18 ноя 19, 11:16    [22018515]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
hvlad
Member

Откуда:
Сообщений: 10961
ёёёёё
/* Возвращает время на момент выполнения запроса */
select time 'now' from RDB$DATABASE;


/* Возвращает время на момент компиляции запроса */
SELECT  time 'NOW' FROM rdb$database; 
Ты уж определись :)
И с регистром тоже :)
18 ноя 19, 11:22    [22018520]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Фыр-фыр.
18 ноя 19, 11:26    [22018522]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
ёёёёё
/* Возвращает время на момент выполнения запроса */
select time 'now' from RDB$DATABASE;

=>
select cast('NOW' as time) from RDB$DATABASE
18 ноя 19, 11:32    [22018526]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
ёёёёё,

если копнуть более глубоко то не на момент выполнения запроса. Ибо при фетче из огромного курсора, это значения для первой и последней записи будет разным.
18 ноя 19, 11:42    [22018542]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Симонов Денис
ёёёёё,

если копнуть более глубоко то не на момент выполнения запроса. Ибо при фетче из огромного курсора, это значения для первой и последней записи будет разным.

Я это и имел в виду. Как кратко сформулировать?
...
Может, и не надо кратко. Так и написать
Симонов Денис
...при фетче из огромного курсора, это значения для первой и последней записи будет разным.


Сообщение было отредактировано: 18 ноя 19, 11:48
18 ноя 19, 11:45    [22018548]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
ёёёёё,

на момент вычисления выражения. Сейчас оно перевычисляется при извлечении новой записи из курсора, но возможно в будущей версии станет инвариантом. Грубо говоря пути оптимизатора не исповедимы. Кстати есть рецепты для фиксации этого значения. Рассказать?
18 ноя 19, 11:52    [22018555]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31197

вычисляется для каждой строчки резалт-сета заново.

Posted via ActualForum NNTP Server 1.5

18 ноя 19, 11:53    [22018556]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Симонов Денис
Кстати есть рецепты для фиксации этого значения. Рассказать?

Использовать вместо него curent_*?
18 ноя 19, 12:04    [22018572]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Мимопроходящий
вычисляется для каждой строчки резалт-сета заново.

Не излишний ли крен в сторону запросов типа "выборка".
Ведь и в длительной ХП, меняющей данные.
18 ноя 19, 12:07    [22018575]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
ёёёёё,

наглядный примерчик


with recursive r(n) as (
  select 1 from rdb$database
  union all
  select n+1 from r where n < 1000
),
t as (
  select
    current_timestamp as t1,
    timestamp 'now' as t2,
    cast('now' as timestamp) as t3
  from r r1 cross join r r2
)
select
  min(t1) as min_t1,
  max(t1)  as max_t1,
  min(t2)  as min_t2,
  max(t2)  as max_t2,
  min(t3)  as min_t3,
  max(t3)  as max_t3
from t
18 ноя 19, 12:57    [22018621]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Симонов Денис,

во-первых
Overflow occurred during data type conversion.
conversion error from string "NOW"
.
А во-вторых, в топку такие примеры, а не в документацию.
18 ноя 19, 13:07    [22018628]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
ёёёёё,

я же сказал в 4.0 сломали может и навсегда. На 3.0 попробуй
18 ноя 19, 13:09    [22018630]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Симонов Денис,

в 3-ке тоже сломано.
18 ноя 19, 13:11    [22018634]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
ёёёёё,

у меня работает
18 ноя 19, 13:18    [22018637]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Симонов Денис
ёёёёё,

у меня работает

Скачал свежий снапошот (3.05.33187) - тоже заработало. А на 3.0.4.33054 - не работает.

Может, и на 4.0 исправят...
18 ноя 19, 13:32    [22018661]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
hvlad
Member

Откуда:
Сообщений: 10961
Симонов Денис
я же сказал в 4.0 сломали может и навсегда
Это ты про что ?

PS и как это относится к сабжу ?
18 ноя 19, 13:44    [22018680]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
hvlad,

это я про 22018622
ёёёёё мой пример на 4.0 проверял
18 ноя 19, 13:47    [22018688]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 23 24 25 26 27 28 29 [30] 31 32   вперед  Ctrl
Все форумы / Firebird, InterBase Ответить