简体   繁体   English

使用oracle sql查询以查找一年中每个月的最后一个星期几

[英]Query to find the last week day of every month in year using oracle sql

查询应返回每月的最后一个工作日。例如,如果2013年3月的最后一个工作日是星期日,则查询应显示2013年3月29日(星期五)。

Try this: 尝试这个:

select dte as last_day, dayofweek_abbr as original_dayofweek, 
dte - (decode(dayofweek, 7, 1, 1, 2, 0)) as last_weekday_america
from (
    select last_day(to_date(to_char(level, '09') || '2013', 'MMYYYY')) as dte,
    to_char(last_day(to_date(to_char(level, '09') || '2013', 'MMYYYY')), 'D') as dayofweek,
    to_char(last_day(to_date(to_char(level, '09') || '2013', 'MMYYYY')), 'DAY') as dayofweek_abbr
    from dual
    connect by level <= 12
)

Output: 输出:

LAST_DAY    ORIGINAL_DAYOFWEEK  LAST_WEEKDAY_AMERICA
1/31/2013   THURSDAY    1/31/2013
2/28/2013   THURSDAY    2/28/2013
3/31/2013   SUNDAY      3/29/2013
4/30/2013   TUESDAY     4/30/2013
5/31/2013   FRIDAY      5/31/2013
6/30/2013   SUNDAY      6/28/2013
7/31/2013   WEDNESDAY   7/31/2013
8/31/2013   SATURDAY    8/30/2013
9/30/2013   MONDAY      9/30/2013
10/31/2013  THURSDAY    10/31/2013
11/30/2013  SATURDAY    11/29/2013
12/31/2013  TUESDAY     12/31/2013

Note that if your nls_territory is different, you may have to tweak the decode. 请注意,如果您的nls_territory不同,则可能需要调整解码。

Following up on what Ed's hint and tbone's code. 跟进Ed的提示和tbone的代码。 Formats the date the way you want. 以所需的方式格式化日期。 The FMDAY formatter removes extra spaces after the day of the week. FMDAY格式化程序将在星期几之后删除多余的空格。

SELECT dte AS last_day, 
       dayofweek_abbr AS original_dayofweek, 
       to_char(dte - (decode(dayofweek, 7, 1, 1, 2, 0)),'DD MON YYYY(FMDAY)') AS     last_weekday_america
FROM (
      SELECT last_day(to_date(to_char(level, '09') || '2013', 'MMYYYY')) as dte,
             to_char(last_day(to_date(to_char(level, '09') || '2013', 'MMYYYY')), 'D') as dayofweek,
             to_char(last_day(to_date(to_char(level, '09') || '2013', 'MMYYYY')), 'DAY') as      dayofweek_abbr
      FROM dual
      CONNECT BY LEVEL <= 12
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM