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

时间:2019-07-17 16:03:47

标签: postgresql date casting integer

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

...
        List<Object[]> results = query.list();

        List<PackDisTask> packageDistTasks = new ArrayList<PackDisTask>();
        PackageDistributionTaskId taskId = new PackageDistributionTaskId();
        Object[] result = null;
        String r = "";

        for (int i = 0; i < results.size(); i++) {
            PackageDistributionTask pdt = new PackageDistributionTask();
            result = results.get(i);

            if (result[0] != null) {
                r = result[0].toString();
                taskId.setFkPackageDistribution(Integer.parseInt(r));
            }

            if (result[10] != null) {
                r = result[10].toString();
                taskId.setFkTaskType(Integer.parseInt(r));
            }

            pdt.setId(taskId);

            packageDistTasks.add(pdt);
        }

表table_X中的“日期值”列为日期类型。表table_Y中的int_date列的类型为integer ...,因此具有以下表达式:

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

...我想将“ date_value”列中的值转换为整数(例如,从2019年7月14日到'20190714')。

但是,我收到以下错误消息:

date_value::integer

如何将日期转换为整数?

P.S .:这个问题的解决方案:convert date to integer in postgresql在我的情况下无济于事,因为我不希望工作天数。

2 个答案:

答案 0 :(得分: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 ;

答案 1 :(得分:0)

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

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

但是我不得不说,因此使用这种日期表示法感到奇怪而又不高兴。