Как мне вычислить разницу между двумя временными метками в PostgreSQL?

#sql #postgresql #timestamp #aggregate-functions #olap-cube

#sql #postgresql #временная метка #агрегатные функции #olap-куб

Вопрос:

У меня есть запрос SELECT для извлечения нужных мне данных. Одной из необходимых данных является «агрегированная» функция для выбора двух дат временных меток и вычисления разницы между ними. Используя несколько ресурсов и веб-сайтов, все они дали мне сохранить ответ, и он не сработал:

 DECLARE @DATE1 TIMESTAMP = actual_route.end_location_time
DECLARE @DATE2 TIMESTAMP = actual_route.actual_trip_start_time
SELECT 
    CONVERT (TIMESTAMPDIFF, @DATE1, @DATE2) AS time_taken, actual_route.time as date_time
  

Я получаю сообщение об ошибке «@»: синтаксическая ошибка в или рядом с «@»
(Это только часть кода, но ошибка здесь)

Комментарии:

1. Просто вычтите их: postgresql.org/docs/current/functions-datetime.html

Ответ №1:

Вы можете использовать разницу в Postgres:

 select (actual_route.end_location_time - actual_route.actual_trip_start_time) as duration
  

Я не уверен, почему вы используете синтаксис SQL Server для этого. Я также не знаю, что timestampdiff должно быть.

Комментарии:

1. я создаю OLAP-куб, в котором разница между двумя временными метками является мерой для куба

2. функция «timestamdiff» — это то, что я нашел в Интернете

3. @JanaNizam . , , Хотя это функция в некоторых базах данных, я никогда не видел ее в качестве аргумента convert() .