PostgreSQL中date_part函数中的语法错误

时间:2016-09-17 10:13:38

标签: sql postgresql syntax-error

我在以下查询中遇到语法错误,该查询从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

2 个答案:

答案 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