如果迄今为止为空,如何获取最近7天的数据?

时间:2018-10-17 08:43:00

标签: sql postgresql

我想从两个日期之间的表中获取所有记录。如果“开始”和“结束”日期均为空,那么我想获取最近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

3 个答案:

答案 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'获得所需的结果。