SQL Ошибка: «-» не может быть применено к отметке времени - PullRequest
0 голосов
/ 21 января 2020

Я использую следующую SQL инструкцию запроса для вычисления разницы во времени в минутах.

query_preadm_uo = """
select distinct oe.icustay_id, 
                date_diff('second', timestamp '1970-01-01 00:00:00', oe.charttime) as charttime, 
                oe.itemid, oe.value ,  
                60*24*date_part('day',ic.intime-oe.charttime)  + 
                60*date_part('hour',ic.intime-oe.charttime) + 
                date_part('min',ic.intime-oe.charttime) as datediff_minutes
from mimiciii.outputevents oe, mimiciii.icustays ic

""" 

Я получаю следующую ошибку.

SYNTAX_ERROR: строка 1: 167: '-' нельзя применить к отметке времени, отметка времени не может выполнить откат

Ошибка в следующей части кода.

60*24*date_part('day',ic.intime-oe.charttime)  + 60*date_part('hour',ic.intime-oe.charttime) + date_part('min',ic.intime-oe.charttime) as datediff_minutes

Есть ли в любом случае, я могу получить избавьтесь от этой ошибки, исправив приведенную выше часть кода в моем запросе, и напишите еще одну для достижения той же функциональности.

1 Ответ

4 голосов
/ 21 января 2020

Обновление

Изменено на Presto, а не PostgreSQL.

Вы можете просто использовать

DATE_DIFF('minute', ic.intime, oe.charttime) AS datediff_minutes

Оригинал Ответ за PostgreSQL

Вы можете использовать EXTRACT(EPOCH FROM ...) для преобразования ваших временных отметок в количество секунд между временной отметкой и unix эпохой, затем вычесть эти значения и разделить на 60, чтобы получить количество минут, т.е.

SELECT ...
       (EXTRACT(EPOCH FROM ic.intime) - EXTRACT(EPOCH FROM oe.charttime)) / 60 AS datediff_minutes
...

Обратите внимание, что вы также можете заменить:

EXTRACT(EPOCH FROM oe.charttime) AS charttime,

на

date_diff('second', timestamp '1970-01-01 00:00:00', oe.charttime) as charttime, 
...