我在从表中检索某些交易时出现问题,我的想法是我要删除用户自2天以来所做的所有交易,但我想排除周末数量(周末这里是周五和周六),所以我可以获得2天的记录但没有周末排除
SELECT c1
FROM my_table
WHERE TRANS_DATE <= (TRUNC (SYSDATE) - 3)..
示例:用户在星期二提出请求我必须在星期四删除请求,但如果他在周四删除请求,我必须在星期一删除它。
任何想法? 谢谢所有
答案 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
);