Использовать переменную подзапроса внутри to_date - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно обновить дату с помощью такого подзапроса, у меня нет номера дня.

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

как я могу использовать переменную subquery.year внутри функции to_date?

TRY 1: Итак, я попробовал это:

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

И у меня есть такая ошибка:

функция to_date (целое число, неизвестно) не существует.

но если вы посмотрите на этот документ: https://www.techonthenet.com/postgresql/functions/to_date.php

Говорят, что WW существует для указания номера недели. Мой столбец 'date' имеет формат даты.

TRY 2: это работает:

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

Как только я пытаюсь использовать такую ​​переменную, она не работает:

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

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Связанная документация по функции to_date: to_date (string1, format_mask) и ошибка Функция to_date (целое, неизвестное) не существует.

так что я думаю, что у вас несоответствие типа вашего первого параметра

Edit1 : за утверждение ОБНОВЛЕНИЕ grh SET date = to_date (string_agg (week_number, 2018), 'WWYYYY'); если вы проверите документацию по функции string_agg, вы увидите, что ожидаемый тип входных параметров - строка, и по крайней мере второй - целое число

0 голосов
/ 13 ноября 2018

В Postgres (и большинстве других разновидностей SQL) оператор конкатенации равен ||

UPDATE grh SET date = to_date(week_number||'2018', 'WWYYYY');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...