SELECT
TO_CHAR(c_date, 'yyyy-mm-dd') AS TJ_DATE -- 自然日
,to_char( TRUNC(c_date , 'IW'),'yyyy-mm-dd') AS W_BEGIN --周开始
,to_char(trunc(c_date, 'IW') + 6 , 'yyyy-mm-dd') AS W_END--周结束
--,trunc((to_number(to_char(trunc(c_date), 'ddd'))+6) / 7) AS WEEKS -- 7 天一周,第几周
,to_char(c_date+1,'ww') AS WEEKS
,case when to_number(to_char(trunc(c_date,'y'), 'iw')) >1 -- 一年第一天 周数
then (case when to_char(c_date,'mm-dd') ='01-01' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
when to_char(c_date,'mm-dd') ='01-02' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
when to_char(c_date,'mm-dd') ='01-03' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
when to_char(c_date,'mm-dd') ='01-04' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
when to_char(c_date,'mm-dd') ='01-05' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
when to_char(c_date,'mm-dd') ='01-06' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
when to_char(c_date,'mm-dd') ='01-07' and to_number(to_char(c_date, 'iw'))+1 >50
then 1
else to_number(to_char(c_date, 'iw'))+1
end )
ELSE to_number(to_char(c_date, 'iw'))
END AS WEEKS_NUM --自然周数
,to_number(to_char(trunc(c_date), 'ddd')) as DAY_NUM-- 当年第几天
,to_char(trunc(c_date , 'MM'),'yyyy-mm-dd') AS M_BEGIN--月开始
,to_char(LAST_DAY(c_date ),'yyyy-mm-dd') AS M_END--月结束
,to_char(c_date, 'yyyy-mm') AS MONTHS--月份
,to_char(c_date , 'yyyy') AS YESRS-- 年份
,to_number(to_char(c_date , 'dd')) AS DAYS
,to_char(c_date , 'q') AS QUARTER--季度
,trim(to_char(c_date , 'DAY')) WEEK_ENGLISH-- 星期 英文
,CASE trim(to_char(c_date , 'DAY'))
WHEN 'MONDAY' THEN '星期一'
WHEN 'TUESDAY' THEN '星期二'
WHEN 'WEDNESDAY' THEN '星期三'
WHEN 'THURSDAY' THEN '星期四'
WHEN 'FRIDAY' THEN '星期五'
WHEN 'SATURDAY' THEN '星期六'
WHEN 'SUNDAY' THEN '星期日'
END AS WEEK_NAME--星期
,to_char(LAST_DAY(c_date ),'dd') AS MONTH_NUM --自然月天数
FROM (select to_date('2019-10-01', 'yyyy-mm-dd') + level - 1 c_date
from dual
connect by rownum <= to_date('2019-10-31', 'yyyy-mm-dd') -
to_date('2019-10-01', 'yyyy-mm-dd') + 1
)
;
Oracle时间表
最新推荐文章于 2022-05-11 11:10:38 发布