Как получить данные за последние 7 дней, если от и до даты является нулевым? - PullRequest
0 голосов
/ 17 октября 2018

Я хочу получить все записи из таблицы между двумя датами.Если даты «от» и «до» равны нулю, я хочу получить данные за последние семь дней.Я написал ниже запрос, который успешно дает данные между двумя датами.Как я могу получить данные за последние семь дней по умолчанию, если обе даты равны нулю?

SELECT 
     COUNT(*), d.dd_value 
FROM audit_transaction t, 
     audit_master m, 
     dd_type_details d 
WHERE t.audit_id = m.audit_id 
    AND d.dd_id = m.process 
    AND m.activity_id = 9 
    AND t.iscompleted = 'completed' 
    AND audit_start_time BETWEEN '10/01/2018'::timestamp AND '10/17/2018'::timestamp 
GROUP BY d.dd_value

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

ВЫБРАТЬ сейчас (), сейчас () - ИНТЕРВАЛ «7 дней»;

0 голосов
/ 17 октября 2018

Используйте COALESCE, чтобы проверить нулевое значение, и now() - INTERVAL '7 days', чтобы получить желаемые результаты.

0 голосов
/ 17 октября 2018

Вы можете использовать условные предложения WHERE для достижения этого.

Если временная метка равна нулю, она пропустит предложение справа.Причинение вашего запроса только для поиска временных отметок, когда у вас есть.

AND (v_start_date IS NULL AND v_end_date IS NULL) OR audit_start_time BETWEEN v_start_date AND v_end_date

Запустите дополнительную проверку, чтобы сделать обратное, т. Е. Пропустить только, когда она равна нулю.

AND (NOT (v_start_date IS NULL AND v_end_date IS NULL)) OR audit_start_time BETWEEN now() AND now() - INTERVAL '7 days' 

Редактировать: Предполагая, что некоторые переменные из контекста хранимой процедуры, v_start_date и v_end_date должны быть временными метками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...