首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果开始日期和结束日期为空,如何获取最近7天的数据?

如果开始日期和结束日期为空,如何获取最近7天的数据?
EN

Stack Overflow用户
提问于 2018-10-17 16:43:00
回答 3查看 208关注 0票数 1

我想从一个表中获取两个日期之间的所有记录。如果"from“和" to”日期都为空,那么我想获取过去七天的数据。我已经写了下面的查询,它成功地给出了两个日期之间的数据。如果两个日期都为空,如何获取最近七天的数据默认值?

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2018-10-17 16:56:40

您可以使用条件WHERE子句来实现这一点。

如果时间戳为空,它将跳过右边的子句。导致您的查询仅在有时间戳时搜索时间戳。

代码语言:javascript
复制
AND (v_start_date IS NULL AND v_end_date IS NULL) OR audit_start_time BETWEEN v_start_date AND v_end_date

运行一个额外的检查来做相反的事情,即只有当它为空时才跳过。

代码语言:javascript
复制
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必须是时间戳。

票数 0
EN

Stack Overflow用户

发布于 2018-10-17 17:30:03

使用下面的查询。

代码语言:javascript
复制
SELECT now(), now() - INTERVAL '7 days';
票数 0
EN

Stack Overflow用户

发布于 2018-10-17 20:29:28

使用COALESCE检查null值,使用now() - INTERVAL '7 days'获得所需的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52850678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档