首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql oracle sysdate:忽略周末

sql oracle sysdate:忽略周末
EN

Stack Overflow用户
提问于 2015-03-24 12:33:30
回答 2查看 232关注 0票数 0

我在我的where中使用此代码:

代码语言:javascript
复制
and table.datum >= sysdate-7
and table.datum <= sysdate

它显示了过去7天的数据--我想补充的是,它忽略了周末(周六和周日)--我检查了互联网,但没有什么对我有用!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-24 12:37:54

在其中使用并添加以下where语句。

代码语言:javascript
复制
AND table.datum BETWEEN sysdate-7 and sysdate
AND TO_CHAR(to_date(substr(table.datum,1,10), 'DD-MM-YYYY'),
                         'D', 'NLS_DATE_LANGUAGE=ENGLISH') NOT IN ('1', '7')
票数 1
EN

Stack Overflow用户

发布于 2015-03-24 13:52:53

“马特”的回答不是错误证明。TO_CHAR(..., 'D'的结果取决于NLS_TERRITORY,而NLS_TERRITORY在每个会话上都可能有所不同。由于TO似乎是德语(使用DATUM作为日期表达式),我甚至感到惊讶的是,马特的解决方案在他的机器上工作。

参见此测试用例:

代码语言:javascript
复制
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';

WITH d AS 
    (SELECT DATE '2015-03-01' + LEVEL AS datum FROM dual CONNECT BY LEVEL <= 31)
SELECT TO_CHAR(datum, 'yyyy-mm-dd fmDay')
FROM d
WHERE TO_CHAR(datum, 'D', 'NLS_DATE_LANGUAGE=ENGLISH') NOT IN ('1', '7')
    AND datum BETWEEN SYSDATE-7 AND SYSDATE;

TO_CHAR(DATUM,'YYYY-MM-DDFMDAY')
2015-03-18 Wednesday
2015-03-19 Thursday
2015-03-20 Friday
2015-03-23 Monday
2015-03-24 Tuesday


ALTER SESSION SET NLS_TERRITORY = 'GERMANY';

WITH d AS 
    (SELECT DATE '2015-03-01' + LEVEL AS datum FROM dual CONNECT BY LEVEL <= 31)
SELECT TO_CHAR(datum, 'yyyy-mm-dd fmDay')
FROM d
WHERE TO_CHAR(datum, 'D', 'NLS_DATE_LANGUAGE=ENGLISH') NOT IN ('1', '7')
    AND datum BETWEEN SYSDATE-7 AND SYSDATE;

TO_CHAR(DATUM,'YYYY-MM-DDFMDAY')
2015-03-18 Wednesday
2015-03-19 Thursday
2015-03-20 Friday
2015-03-21 Saturday
2015-03-24 Tuesday

更安全的方法是使用DyfmDay格式

代码语言:javascript
复制
WITH d AS 
    (SELECT DATE '2015-03-01' + LEVEL AS datum FROM dual CONNECT BY LEVEL <= 31)
SELECT TO_CHAR(datum, 'yyyy-mm-dd fmDay')
FROM d
WHERE TO_CHAR(datum, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') NOT IN ('Sun', 'Mon')
    AND datum BETWEEN SYSDATE-7 AND SYSDATE;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29232755

复制
相关文章

相似问题

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