在to_date中使用子查询变量

时间:2018-11-13 13:39:06

标签: postgresql

我需要使用这样的子查询来更新日期,我还没有获得日期编号。

UPDATE grh
SET date = to_date('subquery.year-subquery.week_number','YYYYWW')
FROM (SELECT year,week_number
      FROM  grh) AS subquery

我如何在to_date功能中使用subquery.year变量?

尝试1:所以我已经尝试过了:

UPDATE grh SET date  = to_date(week_number, 'WW');

我有这种错误:

  

函数to_date(整数,未知)不存在。

但是,如果您查看此文档:https://www.techonthenet.com/postgresql/functions/to_date.php

他们说WW存在,用于指​​定星期数。我的“日期”列是日期格式。

TRY 2:,这是可行的:

  UPDATE grh SET date = to_date('42018', 'WWYYYY');

当我尝试使用这样的变量时,它不起作用:

UPDATE grh SET date = to_date(string_agg(week_number,2018), 'WWYYYY');

2 个答案:

答案 0 :(得分:1)

在Postgres(和大多数其他SQL风格)中,串联运算符为||

UPDATE grh SET date = to_date(week_number||'2018', 'WWYYYY');

答案 1 :(得分:0)

to_date函数的链接文档: to_date(string1,format_mask) 错误是 函数to_date(整数,未知)不存在。

所以我认为您的第一个参数类型不匹配

编辑1 : 为声明  UPDATE grh SET date = to_date(string_agg(week_number,2018),'WWYYYY'); 如果您查看函数string_agg的文档,则会看到输入参数的预期类型是字符串,至少第二个参数是整数