我在以下查询中遇到语法错误,该查询从last_updated_time
列中BIZ_TRANSACTION
列检索月份,其中last_updated_time
存储为毫秒。那么,我该如何应用date_part()
函数呢?
我使用了以下查询,但它在date_part()
附近显示语法错误。
SELECT date_part('month', timestamp TO_CHAR(TO_TIMESTAMP(LAST_UPDATED_TIME / 1000), 'DD/MM/YYYY HH24:MI:SS'))
FROM BIZ_TRANSACTION
答案 0 :(得分:3)
如果我理解你的问题,你需要这样的东西:
SELECT date_part('month',to_timestamp(LAST_UPDATED_TIME/1000));
FROM BIZ_TRANSACTION
答案 1 :(得分:0)
DATE_PART
函数分别需要两个类型为text的参数和一些类型的time / date / interval。
将时间戳转换为字符类型时,没有与输入类型匹配的函数,因为它变为文本和文本。
此外,当您从中检索月份数时,将时间戳转换为char是一个多余的开销。格式化在这种情况下没有任何区别,最好使用Postgres默认日期方式,这样您就不会遇到刚刚遇到的错误: - )
select date_part('month', to_timestamp(last_updated_time/1000))
from biz_transaction
9.5版本的date_part
函数列表(通过键入\df date_part
在psql中查看):
Schema | Name | Result datatype | Datatype of arguments
------------+-----------+-------------------+-----------------------------------
pg_catalog | date_part | double precision | text, abstime
pg_catalog | date_part | double precision | text, date
pg_catalog | date_part | double precision | text, interval
pg_catalog | date_part | double precision | text, reltime
pg_catalog | date_part | double precision | text, time with time zone
pg_catalog | date_part | double precision | text, time without time zone
pg_catalog | date_part | double precision | text, timestamp with time zone
pg_catalog | date_part | double precision | text, timestamp without time zone