POSTGRESQL:如何将日期转换为整数?

8

在一个plpgsql函数中,我有一个简单的插入语句:

insert into table_Y (column1       ,
                     column2       ,
                     //more columns
                     int_date      , -- example: '20190714'
                     //more columns
                    )
select value1              ,
       value2              ,
       //more values
       date_value::integer ,
       //more values   
  from table_X

表table_X中的列"date_value"是日期类型。表table_Y中的列int_date是整数类型...因此使用以下表达式:

date_value::integer

我想要将"date_value"列中的值转换为整数 (例如将2019年7月14日转换为'20190714')。

然而,我遇到了以下错误信息:

ERROR:  cannot cast type date to integer   

如何将日期转换为整数?

附注:这个问题的解决方案:在postgresql中将日期转换为整数不能帮助我,因为我不想得到天数。

2个回答

20

直接转换是不被允许的,因为通常没有意义 - 但是您可以使用辅助文本转换,这应该可以工作:

postgres=# SELECT to_char(CURRENT_DATE, 'YYYYMMDD')::integer;
┌──────────┐
│ to_char  │
╞══════════╡
│ 20190718 │
└──────────┘
(1 row)

但我不得不说,使用这种日期表示方式感觉很奇怪和不愉快。


1

尝试使用int而不是integer,因为下面的查询对我有效:

SELECT * date_part('year/month/day', age(CURRENT_DATE,your date))::int
       as age
       from xyz_table
       where date_part('year/month/day', age(CURRENT_DATE,your date))::int > comparsion value ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接