首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定哪个日期是一个月中的特定星期六或星期日

问如何确定哪个日期是一个月中的特定星期六或星期日
EN

Stack Overflow用户
提问于 2017-03-02 09:21:21
回答 3查看 3.2K关注 0票数 0

我能找到某一天的日期吗?这个日期是某一个月的星期六和星期日。例如,考虑一下一月至2017年。下列日期是周末

代码语言:javascript
复制
7/1/2017 - Saturday

14/1/2017 - Saturday

21/1/2017 - Saturday

28/1/2017 - Saturday 
代码语言:javascript
复制
1/1/2017 - Sunday

8/1/2017 - Sunday

15/1/2017 - Sunday

22/1/2017 - Sunday

29/1/2017 - Sunday

我希望对此进行SQL查询,这样,当我将月和年作为输入时,它应该将上述所有日期(仅为星期六和星期日的日期)作为输出。

EN

回答 3

Stack Overflow用户

发布于 2017-03-02 09:58:24

尝尝这个。在第4行中,可以将年/月组合起来。例如,我使用过2017-02。

代码语言:javascript
复制
SELECT TRUNC(dt, 'MM') + LEVEL - 1 AS mdate
,to_char(TRUNC(dt, 'MM') + LEVEL - 1,'DY' ) as m_day
FROM 
(select to_date('2017-02','YYYY-MM') as dt from dual) --this is where you can put year/month
where to_char(TRUNC(dt, 'MM') + LEVEL - 1,'DY' ) in ('SAT','SUN')
CONNECT BY TRUNC(TRUNC(dt, 'MM') + LEVEL - 1, 'MM') = TRUNC(dt, 'MM')

输出

代码语言:javascript
复制
MDATE       M_DAY 
04-FEB-2017 SAT
05-FEB-2017 SUN
11-FEB-2017 SAT
12-FEB-2017 SUN
18-FEB-2017 SAT
19-FEB-2017 SUN
25-FEB-2017 SAT
26-FEB-2017 SUN
票数 1
EN

Stack Overflow用户

发布于 2017-03-02 09:55:06

SQL查询中的简单调整可以为您提供所需的输出。希望这能有所帮助。

代码语言:javascript
复制
SELECT A.DT,
  TO_CHAR(A.DT,'FmDay') DAY
FROM
  (SELECT TRUNC(sysdate,'MONTH')+level DT
  FROM DUAL
    CONNECT BY level <= TO_CHAR(LAST_DAY(sysdate),'fmDD')
  )a
WHERE TO_CHAR(a.dt,'FmDAY') IN ('SATURDAY','SUNDAY');
票数 0
EN

Stack Overflow用户

发布于 2020-02-18 09:34:54

我将做一些以上代码上的重大更改,我们将在一年中的所有周日和周六进行更改

代码语言:javascript
复制
SELECT TRUNC(dt, 'yyyy') + LEVEL - 1 AS mdate
,to_char(TRUNC(dt, 'yyyy') + LEVEL - 1,'DY' ) as m_day
FROM
(select to_date('2020-01','YYYY-MM') as dt from dual) --this is where you can put year/month
where to_char(TRUNC(dt, 'yyyy') + LEVEL - 1,'DY' ) in ('SAT','SUN')
CONNECT BY TRUNC(TRUNC(dt, 'yyyy') + LEVEL - 1, 'yyyy') = TRUNC(dt, 'yyyy')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42551301

复制
相关文章

相似问题

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