zoukankan      html  css  js  c++  java
  • Oracle——日期函数,时间操作(汇总)

    原文链接:https://www.oracletutorial.com/oracle-date-functions/

    • ADD_MONTHS(date,int)  将一个月数(n)添加到日期,然后返回相隔n个月的同一天。
    SQL> select ADD_MONTHS(TO_DATE('2020-02-29', 'yyyy-mm-dd'), 1) from dual;
      > 2020-03-31 00:00:00
    SQL> SELECT ADD_MONTHS(TO_DATE('2020-03-01', 'yyyy-mm-dd'), 1) from dual;
      > 2020-04-01 00:00:00 
    SQL> SELECT ADD_MONTHS(TO_DATE('2020-03-01', 'yyyy-mm-dd'), -1) from dual;
      > 2020-02-01 00:00:00
    • CURRENT_DATE/LOCALTIMESTAMP/SYSDATE返回会话时区中的当前日期和时间
    SQL> SELECT CURRENT_DATE  FROM dual;
         > 2020-02-29 21:35:05
    SQL> SELECT LOCALTIMESTAMP  FROM dual;
        > 2020-02-29 21:35:27.344333
    SQL> SELECT SYSDATE  FROM dual;
        > 2020-02-29 21:35:51
    • CURRENT_TIMESTAMP/SYSTIMESTAMP   返回当前日期和时间以及会话时区中的时区
    SQL> SELECT CURRENT_TIMESTAMP FROM dual 
       > 2020-02-29 21:14:29.226492 +08:00
    SQL> SELECT SYSTIMESTAMP  FROM dual;
        > 2020-02-29 21:36:06.249039 +08:00
    • EXTRACT 从日期时间值中提取日期时间字段的值,例如YEAR,MONTH,DAY,…。
    SQL>  SELECT EXTRACT(YEAR FROM SYSDATE)year,EXTRACT(MONTH FROM SYSDATE)month,EXTRACT(DAY  FROM SYSDATE)day,EXTRACT(HOUR  FROM SYSTIMESTAMP)hour,EXTRACT(MINUTE  FROM SYSTIMESTAMP)minute,EXTRACT(SECOND   FROM SYSTIMESTAMP)second FROM dual;

    YEAR MONTH DAY HOUR MINUTE SECOND ---------- ---------- ---------- ---------- ---------- ---------- 2020 2 29 13 24 29.951594
    • LAST_DAY(date)   获取指定日期的月份的最后一天。
    SQL> SELECT LAST_DAY(TO_DATE('2020-02-01', 'yyyy-mm-dd')) FROM dual;
       > 2020-02-29 00:00:00
    •  MONTHS_BETWEEN(date1,date2) 返回两个日期之间的月数差 
    SQL> SELECT MONTHS_BETWEEN(TO_DATE('2020-07-01','yyyy-mm-dd'),TO_DATE('2020-04-01','yyyy-mm-dd'))  FROM dual;
       > 3
    SQL> SELECT MONTHS_BETWEEN(TO_DATE('2020-07-23','yyyy-mm-dd'),TO_DATE('2020-04-01','yyyy-mm-dd'))  FROM dual;
       > 3.70967741935483870967741935483870967742
    • NEXT_DAY( date, string)   string是周一到周日的英文,返回当前日期下一个周几的时间
    SQL> SELECT NEXT_DAY(TO_DATE('2020-02-29', 'yyyy-MM-dd'), 'Friday')  FROM dual;  --2月29日是周六,下个周五是3月6号
        > 2020-03-06 00:00:00
    • ROUND(date,fmt) 将日期date按照由fmt指定的格式进行四舍五入处理.如果没有给fmt则使用缺省设置'DD'
    SQL> SELECT ROUND(TO_DATE('2020-02-15', 'yyyy-MM-dd'), 'yyyy')  FROM dual;   --如果位于上半年,则舍去,如果位于下半年,则+1年,以下同理
        > 2020-01-01 00:00:00
    SQL> SELECT ROUND(TO_DATE('2020-07-15', 'yyyy-MM-dd'), 'yyyy')  FROM dual;
        > 2021-01-01 00:00:00
    SQL> SELECT ROUND(TO_DATE('2020-07-15', 'yyyy-MM-dd'), 'MM')  FROM dual;
        > 2020-07-01 00:00:00
    SQL> SELECT ROUND(TO_DATE('2020-02-25', 'yyyy-MM-dd'), 'MM')  FROM dual;
        > 2020-03-01 00:00:00
    SQL> SELECT ROUND(TO_DATE('2020-02-25 15:00:00', 'yyyy-MM-dd hh24:mi:ss'))  FROM dual;
        > 2020-02-26 00:00:00
    SQL> SELECT ROUND(TO_DATE('2020-02-25 08:00:00', 'yyyy-MM-dd hh24:mi:ss'))  FROM dual;
        > 2020-02-25 00:00:00
    • TO_CHAR(date,str) 将时间转换为指定的格式
    SQL> SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss')  FROM dual;
        > 2020-03-01 00:06:48
    SQL> SELECT TO_CHAR(SYSDATE)  FROM dual;
        > 01-MAR-20
    • TO_DATE(ch, fmt) 将字符串安装格式转换为时间
    SQL> SELECT TO_DATE('2020-03-01','yyyy-MM-dd' )  FROM dual;
        > 2020-03-01 00:00:00
    SQL> SELECT TO_DATE('2020-03-01 12:03:44','yyyy-MM-dd hh24:mi:ss' )  FROM dual;
        > 2020-03-01 12:03:44

    更多地参考官方文档

  • 相关阅读:
    java枚举
    [bzoj3436]小K的农场【差分约束系统】【判负环】
    [bzoj1085][SCOI2005]骑士精神【暴力】
    [bzoj1034][ZJOI2008]泡泡堂BNB【贪心】
    [bzoj1046][HAOI2007]上升序列【dp】
    [bzoj1050][HAOI2006]旅行comf【MST】
    [bzoj1047][HAOI2007]理想的正方形【单调队列】
    [bzoj1004][HNOI2008]Cards【群论】
    [bzoj1045][HAOI2008] 糖果传递【构造】
    [bzoj4589]Hard Nim【FWT】
  • 原文地址:https://www.cnblogs.com/GuixinChan/p/12386232.html
Copyright © 2011-2022 走看看