2015-02-02 22 views
5

Tôi đang gặp phải vấn đề mà tôi không thể thêm khoảng thời gian vào một ngày trong postgresql. Trong MySql tôi sẽ làm điều này:Cú pháp nhập không hợp lệ cho khoảng thời gian

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

với báo cáo kết quả tương ứng trong postgresql phúc:

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

Nhưng, khi tôi làm như vậy tôi nhận được một lỗi:

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

Nếu tôi loại bỏ phần + -46 * interval '1 day' của tuyên bố, nó hoạt động như mong đợi.

Truy vấn đơn giản:

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; 

Trả lời

11

Nếu bạn cast chuỗi của bạn như một ngày, mà sẽ giải quyết vấn đề:

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

Chuỗi ngày của riêng mình là mơ hồ như có nhiều loại khác nhau để đại diện cho thời gian.

2

Cách dễ dàng hơn để thực hiện việc này là:

date '2015-02-02' - interval '46 days' 
Các vấn đề liên quan