时间戳类型的输入语法无效

2024-04-08

运行下面的代码时,我收到一条错误消息,指出来自admission_datetime的时间戳类型的输入语法无效。

    UPDATE ccsm.stg_demographics_baseline
    SET xx_los_days =
    (CASE WHEN admission_datetime IS NULL OR 
    date_trunc('day',admission_datetime) = ''
    THEN NULL
    WHEN discharge_datetime IS NULL OR 
    date_trunc('day',discharge_datetime) = ''
    THEN date_diff('day', admission_datetime, CURRENT_DATE)
    ELSE
    date_diff('day', admission_datetime, discharge_datetime)
    END);
enter code here

See date_trunc文档 https://www.postgresql.org/docs/10/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC:

返回值的类型为时间戳或间隔,所有比所选字段重要的字段都设置为零(或对于日期和月份为 1)。

所以你不能将它与空字符串进行比较:

date_trunc('day', admission_datetime) = ''

The invalid input syntax for type timestamp错误消息涉及空字符串 (''),而不是admission_datetime column.

此外,没有date_diffPostgreSQL 中的函数。减一就可以了timestamp从另一个,你会得到一个interval result:

SELECT timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'

你会得到

interval '1 day 15:00:00'

如果您需要差异days, 尝试这个:

SELECT DATE_PART('day', timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00')

结果是1.

See here http://www.sqlines.com/postgresql/how-to/datediff的例子DATEDIFF类似于 PostgreSQL 中的表达式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间戳类型的输入语法无效 的相关文章

随机推荐