首页 > 解决方案 > 在 oracle 查询中获取日期名称

问题描述

如何在以下示例中获取日期名称:

SELECT
    day   AS return,
    day   AS display,
    ''   AS day_name
FROM
    (
        WITH temp ( col ) AS (
            SELECT
                to_date(2, 'mm') --2 is February
            FROM
                dual
        )
        SELECT
            to_number(to_char(col + level - 1, 'dd')) day
        FROM
            temp
        CONNECT BY
            level <= last_day(col) - col + 1
        ORDER BY
            day
    )

标签: sqloracle

解决方案


如何获取日期名称

采用:

TO_CHAR( day, 'fmDAY' )

fm格式模型将去除尾随空格,否则将输出,因为TO_CHAR( date_value, 'DAY' )将用空格右填充日期名称,以便它们都具有与最长的日期名称相同的长度。)

所以:

SELECT EXTRACT( DAY FROM day ) AS return,
       EXTRACT( DAY FROM day ) AS display,
       TO_CHAR( day, 'fmDAY' ) AS day_name
FROM (
  WITH temp ( col ) AS (
    SELECT to_date(2, 'mm') --2 is February
    FROM   dual
  )
  SELECT col + level - 1 AS day
  FROM   temp
  CONNECT BY level <= last_day(col) - col + 1
  ORDER BY day
)

其中,输出:

返回 | 显示 | DAY_NAME
-----: | ------: | :--------
     1 | 1 | 周一   
     2 | 2 | 周二  
     3 | 3 | 周三
     4 | 4 | 周四
     5 | 5 | 星期五   
     6 | 6 | 周六
     7 | 7 | 星期日   
     8 | 8 | 周一   
     9 | 9 | 周二  
    10 | 10 | 周三
    11 | 11 | 周四
    12 | 12 | 星期五   
    13 | 13 | 周六
    14 | 14 | 星期日   
    15 | 15 | 周一   
    16 | 16 | 周二  
    17 | 17 | 周三
    18 | 18 | 周四
    19 | 19 | 星期五   
    20 | 20 | 周六
    21 | 21 | 星期日   
    22 | 22 | 周一   
    23 | 23 | 周二  
    24 | 24 | 周三
    25 | 25 | 周四
    26 | 26 | 星期五   
    27 | 27 | 周六
    28 | 28 | 星期日   

db<>在这里摆弄


推荐阅读