选择2天以外的行,周末除外

时间:2016-03-05 08:37:10

标签: sql oracle oracle11g

我在从表中检索某些交易时出现问题,我的想法是我要删除用户自2天以来所做的所有交易,但我想排除周末数量(周末这里是周五和周六),所以我可以获得2天的记录但没有周末排除

SELECT c1
FROM my_table
WHERE TRANS_DATE <= (TRUNC (SYSDATE) - 3).. 

示例:用户在星期二提出请求我必须在星期四删除请求,但如果他在周四删除请求,我必须在星期一删除它。

任何想法? 谢谢所有

2 个答案:

答案 0 :(得分:1)

SELECT c1
FROM my_table
WHERE TRANS_DATE >= sysdate - decode(to_number(to_char(sysdate -1,'D')), 1,4, 6,3, 7,4, 2)

第一天是星期天 如果前一天是周日或周六,那么我们休息两天 如果前一天是星期五,那么我们休息一天 加两天

答案 1 :(得分:0)

尝试使用案例表达式确定星期几并相应地减去,例如:

SELECT c1
FROM my_table
WHERE 
TRANS_DATE <= (
CASE WHEN TO_CHAR(SYSDATE, 'fmDay', 'NLS_DATE_LANGUAGE = American' ) = 'Monday' then TRUNC (SYSDATE) - 5
     ELSE TRUNC (SYSDATE) - 3 END
);