sasha wrote:
Задача: есть поле TIMESTAMP, есть временной интервал в минутах INT. Надо
из времени вычесть интервал.
Хотел было написать что-то типа
SELECT
CURRENT_TIMESTAMP
- (CURRENT_DATE - CAST(:DATE / 1440 AS INTEGER))
- (CURRENT_TIME - :DATE - CAST(:DATE / 1440 AS INTEGER) * 1440)
FROM RDB$DATABASE;
Знаешь, третий диалект, он вообще от лукавого (2 ДК - ;) ). Но идея,
думаю, такова. Вычитать таймштампы разрешают, видимо, потому, что
стандарт определяет результат как тип INTERVAL, которого у нас нету ещё,
и который заменяется лукаво на DOUBLE, типа интуитивно понятно, что это
есть временной интервал в дробных днях. Результат деления-умножения же
любого из типов этого типа (каламбурчик-с!) с понятием интервала ну
никак не связывается, посему оно и запрещено. Почему нельзя из
таймштампа вычесть дату и получить всё тот же интуитивный интервал, мне
лично неясно. Почему нельзя время - ясно, тут по смыслу опять интервалом
и не пахнет, время, в отличие от даты не есть точка на шкале времени
(опять каламбурчик-с!). Вычесть из такой точки можно только то, что
является либо такой же точкой, и получить интервал, либо может быть
трактовано как интервал и получить тогда точку. Прибавить можно только
интервал. Прояснил или запутал? Такшта получи интервал где-нить в
сторонке как сумеешь и его уже и вычитай.
--
Regards. Ded.