當月數據
成都創新互聯公司專業為企業提供柴桑網站建設、柴桑做網站、柴桑網站設計、柴桑網站制作等企業網站建設、網頁設計與制作、柴桑企業網站模板建站服務,10余年柴桑做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
select * from table t
where t.create_time
=TRUNC(SYSDATE, 'MM')
and
t.create_time=last_day(SYSDATE) create_time為你要查詢的時間
當年數據
select * from table t
where t.create_time
=trunc(sysdate,'YYYY')
and
t.create_time=add_months(trunc(sysdate,'YYYY'),12)-1
本周(國外周日為一個星期第一天)
where t.create_time =trunc(sysdate,'day')+1 and
t.create_time=trunc(sysdate,'day')+6 本周(國內周一為一個星期第一天)
where t.create_time =trunc(next_day(sysdate-8,1)+1) and
t.create_time=trunc(next_day(sysdate-8,1)+7)+1
select (case when to_char(sysdate,'d')='1' then sysdate-6 else sysdate-to_number(to_char(sysdate,'d'))+1 end) as 周頭, (case when to_char(sysdate,'d')='1' then sysdate else sysdate+7-to_number(to_char(sysdate,'d')) end) as 周尾 from dual
注:to_char(sysdate,'d')把日期格式化成數字表示的星期幾,按西方人的習慣,'1'表示星期日
select to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求當年的第幾周
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求當年的第幾周
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyy') as year, --oracle求第幾年
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyymm') as month, --oracle求當年的第幾月
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求當年的第幾天
to_char(TO_DATE('20171123', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求當年的第幾季度
from dual
-----------
SELECT
to_char(sysdate,'day') 星期幾,
to_char(SYSDATE,'ddd') 第幾天,
to_char(SYSDATE,'ww') 第幾周,
to_char(SYSDATE,'mm') 第幾月,
to_char(SYSDATE,'q') 第幾季
FROM dual
最近遇到業務需求,需要按周統計數據。
思考再三想到可以使用每周周一來計算。
故寫出如下獲得系統當前月份所有周一的語句。
select * from (
--轉化成周一去重
select distinct trunc(t.day,'iw') as mon from (
--獲取本月所有日期集合
SELECT trunc(sysdate, 'mm') + LEVEL - 1 DAY
FROM DUAL
CONNECT BY trunc(sysdate, 'mm') + LEVEL - 1 =
last_day(trunc(sysdate))
)t
)a
--移除非本月的周一
where trunc(a.mon, 'mm') =? trunc(sysdate, 'mm')
ORDER BY MON
注:
trunc(sysdate,'iw') 語句可以獲取本周周一的日期 (date類型)
trunc(sysdate,'iw') +1 可以獲取本周周二的日期。
以此類推
(可以把sysdate換成其它時間)