Sake562 Ответов: 1

Как я могу рассчитать временной интервал между 2date, часом, минутой, секундой в firebird


я хотел бы рассчитать
time interval between 2date,hour,minute,second

;
например, у меня есть starttime: 2016-08-26 08:50:05.0 и endtime 2016-08-19 18: 01:48.0

я хочу получить endtime-startime в firebird

Что я уже пробовал:

я попробовал этот запрос :
выберите datediff(минута,'2010-01-22 15:29:55.090','2010-01-22 15:30:09.153') / 1000.0 как сек

но я получаю эту ошибку :

Ошибка двигателя (код = 335544569):
Динамическая ошибка SQL.
Код ошибки SQL = -104.
Неожиданный конец командной строки 1, колонка 89.

Ошибка SQL (код = -104):
Недопустимый токен.

1 Ответов

Рейтинг:
8

phil.o

Почему бы тебе не последовать за Жар-Птицей синтаксис datediff() [^]?

Что привело бы вас к чему-то вроде

SELECT DATEDIFF(MINUTE FROM CAST('2010-01-22 15:29:55.090' AS DATE) TO CAST('2010-01-22 15:30:09.153' AS DATE)) / 1000.0 AS Secs


Кстати, если вы разделите полученное количество минут на 1000, то не получите количество секунд. Если вы хотите получить число секунд из числа минут,вы должны умножить минуты на 60.

Наконец, как правило, вы всегда должны смотреть на справочные страницы используемого вами движка базы данных (например, Firebird). Язык SQL не является универсальным для всех движков, есть некоторые общие слова между всеми, но каждый из них также имеет свои крошечные особенности. Копирование-вставка SQL-кода другого движка и ожидание, что он будет работать, - это принятие того, чтобы потерять кучу времени.

Любезно.


Sake562

Я посмотрел синтаксис Firebird datediff (), но не могу решить проблему

phil.o

Что вы изменили в своем запросе после прочтения ссылки?

Sake562

Выберите DATEDIFF(день от START_TIME до END_TIME) из TABLE_NAME
Я НАПИСАЛ ЭТОТ КОД И ОН РАБОТАЕТ СПАСИБО