2015-02-02 9 views
5

У меня возникает проблема, когда я не могу добавить интервалы к дате в postgresql. В MySql Я хотел бы сделать это:Недопустимый синтаксис ввода для интервала типа

date_add('2015-02-02', interval -46 day) 

с соответствующим заявлением в PostGreSQL существа:

'2015-02-02' + -46 * interval '1 day' 

Но, когда я делаю это я получаю ошибку:

[Err] ERROR: invalid input syntax for type interval: "2015-02-02" 

Если бы я удалите + -46 * interval '1 day' раздел инструкции, он работает как ожидалось.

Упрощенный запрос:

SELECT 
    cd.date_sort_prequeue_start AS date, 
    SUM(CASE WHEN cd.call_conclusion='Answered' THEN 1 ELSE 0 END) AS calls_answered 
FROM 
    data_warehouse.call_detail AS cd 
    INNER JOIN data_warehouse.users_history AS uh ON cd.users_history_id=uh.id 
WHERE 
    cd.date_sort_prequeue_start>= '2015-02-02' + (-46 * INTERVAL '1 day') 
    AND cd.date_sort_prequeue_start<'2015-02-02' 
    AND cd.call_type='I' AND uh.team='TeamOne' 
GROUP BY 
    cd.date_sort_prequeue_start 
ORDER BY 
    cd.date_sort_prequeue_start; 

ответ

11

Если вы приводите вашу строку в качестве даты, что позволит решить проблему:

'2015-02-02'::date + -46 * interval '1 day' 

Строка сама по себе является неоднозначным, поскольку есть несколько различных типов для представления времени.

2

Простой способ сделать это будет:

date '2015-02-02' - interval '46 days' 
Смежные вопросы