【问题标题】:POSTGRESQL: how to convert date to integer?POSTGRESQL:如何将日期转换为整数?
【发布时间】:2019-07-17 16:03:47
【问题描述】:

在 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   

如何将日期转换为整数?

P.S.:这个问题的解决方案:convert date to integer in postgresql 对我没有帮助,因为我不想要天数。

【问题讨论】:

    标签: postgresql date casting integer


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      尝试使用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 ;
      

      【讨论】:

        猜你喜欢
        • 2015-04-17
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 2021-08-17
        • 2018-10-16
        相关资源
        最近更新 更多