在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在我的情况下无济于事,因为我不希望工作天数。
答案 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)
但是我不得不说,因此使用这种日期表示法感到奇怪而又不高兴。