我想从一个表中获取两个日期之间的所有记录。如果"from“和" to”日期都为空,那么我想获取过去七天的数据。我已经写了下面的查询,它成功地给出了两个日期之间的数据。如果两个日期都为空,如何获取最近七天的数据默认值?
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发布于 2018-10-17 16:56:40
您可以使用条件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必须是时间戳。
发布于 2018-10-17 17:30:03
使用下面的查询。
SELECT now(), now() - INTERVAL '7 days';发布于 2018-10-17 20:29:28
使用COALESCE检查null值,使用now() - INTERVAL '7 days'获得所需的结果。
https://stackoverflow.com/questions/52850678
复制相似问题