Возникли проблемы с интервалом SQL - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно получить сумму данных за определенную дату за год.Но у меня возникли проблемы с интервалом

Select 0 - sum(l.icdetailquantity )
    from inventoryline l 
    where l.icmasterid = 'WAD185967E' and l.icdetailtranstype = 5 
        and l.icdetaildate <= '01-Jan-2019' and l.icdetaildate >  Now() - interval '1 year'

Это работает, как и ожидалось, но мне нужно пропустить дату, а не использовать Now ()

Select 0 - sum(l.icdetailquantity )
    from inventoryline l 
    where l.icmasterid = 'WAD185967E' and l.icdetailtranstype = 5 
        and l.icdetaildate <= '01-Jan-2019' and l.icdetaildate >  '01-Jan-2019' - interval '1 year'

второй SQl дает ошибку

ERROR:  invalid input syntax for type interval: "01-Jan-2019"
LINE 4: ...detaildate <= '01-Jan-2019' and l.icdetaildate >  '01-Jan-20...

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Вы пытаетесь вычесть год из строки.Это не работает, вы должны сначала привести вашу строку к объекту даты, используя:

to_date(date_string,format)  

Пример, который будет работать для вас:

to_date('01-Jan-2019', 'DD-Mon-YYYY') - interval '1 year'

http://www.postgresqltutorial.com/postgresql-to_date/

1 голос
/ 20 июня 2019

Вы пробовали с

Select 0 - sum(l.icdetailquantity )
from inventoryline l 
where l.icmasterid = 'WAD185967E' 
  and l.icdetailtranstype = 5 
  and l.icdetaildate <= date '2019-01-01' 
  and l.icdetaildate >  date '2019-01-01' - interval '1 year'

Из документации, которую я смотрю (https://www.postgresql.org/docs/current/functions-datetime.html) ключевое слово "date", по-видимому, необходимо.

...