SQL错误:“”无法应用于时间戳

2024-06-28 11:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用下面的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: line 1:167: '-' cannot be applied to timestamp, timestamp unable to rollback

错误在代码的以下部分

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

无论如何,我可以通过更正查询中的上述部分代码并编写其他代码来实现相同的功能,从而消除此错误


Tags: 代码dateas错误mintimestampoeic
1条回答
网友
1楼 · 发布于 2024-06-28 11:35:22

更新

更改为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, 

相关问题 更多 >