• Oracle时间函数


    YYYY年 Q季度
    MM月 month月
    WW当年第几周 W本月第几周
    DDD 当年第几天 DD当月第几天 D当周内第几天 DY当周内星期几 day当周内星期几
    HH或HH12:12进制小时数 HH24:24小时制
    MI:分钟数(0~59) SS:秒数(0~59)
    1、Sysdate:当前日期和时间
    Select sysdate from dual

    2、Last_day():本月最后一天
    Select last_day(sysdate) from dual;

    3、Add_months(d,n):当前日期d后推n个月
    Select add_months(sysdate,2) from dual;

    4、Months_between(f,s):日期f和s间相差月数
    select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))from dual;

    5、NEXT_DAY(d,day_of_week):返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个
    工作日的日期。参数"day_of_week"必须为该星期中的某一天。
    返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
    SELECT next_day(to_date('20050620','YYYYMMDD'),1) FROM dual;
    --------------------------------
    每周的星期五晚上23:00
    select trunc(next_day(sysdate,'星期五'))+23/24 from dual;
    ---------------------------------

    6、current_date():返回当前会话时区中的当前日期
    select current_date from dual;

    7、current_timestamp():以timestamp with time zone数据类型返回当前会话时区中的当前日期
    select current_timestamp from dual;

    8、dbtimezone():返回时区
    select dbtimezone from dual;

    9、extract():找出日期或间隔值的字段值
    select extract(year from add_months(sysdate,36)) " Years" from dual;

    10、localtimestamp()返回会话中的日期和时间
    select localtimestamp from dual;


    天数增减:
    select (sysdate - 3) from dual;
    select (sysdate + 3) from dual;

    今天晚上23:00:trunc(sysdate)+23/24
    TRUNC(SYSDATE)+(1440*60-1)/(1440*60):2015-06-01 23:59:59
    TRUNC(SYSDATE)+1-1/86400:2015-06-01 23:59:59
    增加一小时:SYSDATE + 1/24
    增加10分钟: 'SYSDATE + 10/(60*24)'
    增加30秒: 'SYSDATE + 30/(60*24*60)'

    当前时间减去7分钟的时间
    select sysdate,sysdate - interval '7' MINUTE from dual;
    当前时间减去7小时的时间
    select sysdate - interval '7' hour from dual;
    当前时间减去7天的时间
    select sysdate - interval '7' day from dual;
    当前时间减去7月的时间
    select sysdate,sysdate - interval '7' month from dual;
    当前时间减去7年的时间
    select sysdate,sysdate - interval '7' year from dual;
    时间间隔乘以一个数字
    select sysdate,sysdate - 8*interval '7' hour from dua

    上月末天:
    select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;
    上月今天:
    select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;
    上月首天:
    select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;

    判断上下午
    if to_date(to_char(sysdate, 'hh24:mi:ss'), 'hh24:mi:ss') <
    to_date('12:00:00', 'hh24:mi:ss') then
    v_zblb := '上午';
    else
    v_zblb := '下午';
    end if;

    按照每周进行统计:
    select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');
    要找到某月中所有周五的具体日期:
    select to_char(t.d,'YY-MM-DD') from ( select trunc(sysdate, 'MM')+rownum-1
    as d from dba_objects where rownum < 32) t where to_char(t.d, 'MM') =
    to_char(sysdate, 'MM') and trim(to_char(t.d, 'Day'))
    处理月份天数不定的办法
    select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual;
    找出今年的天数
    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual ;
    闰年的处理方法
    to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )

    TO_CHAR把日期或数字转换为字符串
    TO_CHAR(number, '格式')
    TO_CHAR(salary, '$99,999.99')
    TO_CHAR(date, '格式') to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
    TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS')
    TO_DATE把字符串转换为数据库中的日期类型
    TO_DATE(char, '格式')
    TO_NUMBER将字符串转换为数字
    TO_NUMBER(char, '格式')

    日期时间转为日期:
    to_date(to_char(b.billing_date_time , 'yyyy/mm/dd'), 'yyyy-mm-dd')
    to_date('2014-03-12 14:00:00','YYYY-MM-DD HH24:MI:SS')
    年龄:
    trunc(months_between(sysdate,t.birthday)/12) floor(MONTHS_BETWEEN(sysdate,b.date_of_birth)/12)

  • 相关阅读:
    Android 中 Fragment 的切换(解决 replace 的低效)
    Android 中 OkGo 的使用 (封装 OkHttp)
    fastjson 封装工具类
    给系统添加右键使用 IDEA 打开的功能
    发现了一个很好看的博客园主题
    AndroidStudio中如何创建指定布局的layout文件
    转载:十个前端UI优秀框架
    win10 添加 telnet 工具
    tomcat各版本与jdk及servlet各版本对应关系
    servlet和jsp的maven依赖
  • 原文地址:https://www.cnblogs.com/shanzzs/p/10791336.html
Copyright © 2020-2023  润新知