我想从两个日期之间的表中获取所有记录。如果“开始”和“结束”日期均为空,那么我想获取最近7天的数据。我在下面编写了查询,该查询已成功在两个日期之间提供了数据。如果两个日期都为空,如何获得最近7天的数据默认值?
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
答案 0 :(得分:0)
您可以使用条件WHERE子句来实现。
如果时间戳为null,则将跳过右侧的子句。导致查询仅在有时间戳时才搜索。
AND (NOT (v_start_date IS NULL AND v_end_date IS NULL)) OR audit_start_time BETWEEN now() AND now() - INTERVAL '7 days'
运行其他检查以执行相反的操作,即仅在为空时跳过。
remove()
编辑:假设存储过程的上下文中有一些变量,则v_start_date和v_end_date必须为时间戳。
答案 1 :(得分:0)
选择now(),now()-间隔“ 7天”;
答案 2 :(得分:0)
使用COALESCE
检查空值,使用now() - INTERVAL '7 days'
获得所需的结果。