У меня есть этот запрос, который вызывает у меня некоторые проблемы, он выглядит так:
UPDATE servicecontracts
SET planned_duration = (to_char(due_date) - to_char(start_date) + 1)
,actual_duration =''
,progress = NULL
WHERE servicecontractsid = '263'
После некоторого исследования мне удалось выяснить, что пытается сделать этот запрос, он просто пытается найти запланированную продолжительность, вычитая дату выполнения и дату начала. Почему, это пытается сделать это путем вычитания строк, я не знаю. Также для функции to_char
требуется второй параметр.
Итак, в любом случае, теперь мне нужно найти planned_duration
, но как мне это сделать. Согласно документации Postgresql, функция to_char
не имеет возможности возвращать целое число, если вы установите его для возврата текста, а затем, если вы попытаетесь преобразовать строку в целое число с помощью явных приведений, таких как ::integer
, вы получаете ошибку, потому что целое число не может содержать двоеточия.
Итак, есть ли способ для to_char
вернуть целое число, которое каким-то образом представляет дату, а затем вычесть два?
Если нет, что я должен сделать, чтобы выполнить это?