Skip to content

date.sql #4

@maskleo

Description

@maskleo
-- 本季度第一天   
SELECT to_char(TRUNC(SYSDATE, 'Q'), 'YYYY-MM-DD') FROM dual;   
  
-- 上个季度最后一天(可以用本季度第一天减去1得到)   
SELECT to_char(TRUNC(SYSDATE, 'Q') - 1, 'YYYY-MM-DD') FROM dual;   
  
-- 上个季度第一天(本季度第一天 减 3个月)   
SELECT to_char(add_months(TRUNC(SYSDATE, 'Q'), -3), 'YYYY-MM-DD')   
  FROM dual;   
  
-- 上个季度第一天(本季度减一个月之后的月份的最后一天)   
select to_char(last_day(add_months(trunc(sysdate, 'Q'), -1)), 'yyyy-mm-dd')   
  from dual   
  
--1: 取得当前日期是本月的第几周   
select to_char(sysdate,'YYYYMMDD    W    HH24:MI:SS')   from   dual;   
select to_char(sysdate, 'W') from dual;   
  
--2:取得当前日期是一个星期中的第几天,注意星期日是第一天   
select sysdate, to_char(sysdate, 'D') from dual;   
--类似:   
select to_char(sysdate, 'yyyy') from dual; --当前年   
select to_char(sysdate, 'Q' ) from dual; --当前季度   
select to_char(sysdate, 'mm') from dual; --当前月   
select to_char(sysdate, 'dd') from dual; --当前日   
  
--3:取当前日期是星期几的中文显示:   
select   to_char(sysdate, 'day')   from   dual;   
  
--4:如果一个表在一个date类型的字段上面建立了索引,如何使用   
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'   
  
--5: 得到当前的日期   
select sysdate from dual;   
  
--6: 得到当天凌晨0点0分0秒的日期   
select to_char(trunc(sysdate), 'yyyymmdd hh:mi:ss' ) from dual;   
  
-- 得到这天的最后一秒   
select trunc(sysdate) + 0.99999 from dual;   
  
-- 得到小时的具体数值   
select trunc(sysdate) + 1 / 24 from dual;   
select trunc(sysdate) + 7 / 24 from dual;   
  
--7:得到明天凌晨0点0分0秒的日期   
select trunc(sysdate + 1) from dual;   
select trunc(sysdate) + 1 from dual;   
  
--8: 本月一日的日期   
select trunc(sysdate, 'mm') from dual;   
  
--9:得到下月一日的日期   
select add_months(trunc(sysdate, 'mm'), 1) from dual;   
select trunc(add_months(sysdate, 1), 'mm') from dual;   
  
-- 10:返回当前月的最后一天?   
select last_day(sysdate) from dual;   
select last_day(trunc(sysdate)) from dual;   
select trunc(last_day(sysdate)) from dual;   
select trunc(add_months(sysdate, 1), 'mm') - 1 from dual;   
  
--11: 得到一年的第一天   
select trunc(sysdate, 'y') from dual   
  
--11: 得到一年的每一天   
select trunc(sysdate, 'yyyy') + rn - 1 date0   
  from (select rownum rn from all_objects where rownum < 366) t;   
  
--12:今天是今年的第N天   
SELECT TO_CHAR(SYSDATE, 'DDD') FROM DUAL;   
  
--13:如何在给现有的日期加上2年   
select add_months(sysdate, 24) from dual;   
  
--14:判断某一日子所在年分是否为润年   
select last_day(trunc(sysdate, 'yyyy') + 31) from dual   -- 通过一年的第一天加上31天到2月,然后取2月最后一天   
select decode(to_char(last_day(trunc(sysdate, 'y') + 31), 'dd'),   
              '29',   
              '闰年',   
              '平年')   
  from dual;   
  
--15:判断两年后是否为润年   
select decode(to_char(last_day(trunc(add_months(sysdate, 24), 'y') + 31), 'dd'),   
              '29',   
              '闰年',   
              '平年')   
  from dual;   
  
--16:得到日期的季度   
select trunc(sysdate, 'mi') from dual ;   
select to_number(to_char(sysdate,'mm')) from dual;   
select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;   
select to_char(sysdate, 'Q') from dual;   
  
--No17:返回某个月的最后一天   
select to_char(last_day(sysdate), 'dd') from dual  

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions