• ORACLE日期相关语法


    一、日期格式

    1.1 日期格式
    1. YYYY-MM-DD 年-月-日
    2. HH24:MI:SS 时:分:秒(HH12、HH : 均为 12 小时制 )
    select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') 当前时间 from dual;
    
    • 1
    1.2 注意:一周的第一天是周日
    1.3 日期展示示例
    SELECT SYSDATE 当前时间,
           trunc(SYSDATE) 今日0,
           trunc(SYSDATE) + 6 / 24 当天6,
           to_char(SYSDATE, 'YYYY') 四位年,
           to_char(SYSDATE, 'YY') 两位年,
           to_char(SYSDATE, 'MM') 月份,
           to_char(SYSDATE, 'MONTH') 月份带月份名,
           to_char(SYSDATE, 'MON') 月份带月份名简称,
           to_char(SYSDATE, 'RM') 月份罗马数字,
           to_char(SYSDATE, 'DDD') 当年第n天,
           to_char(SYSDATE, 'DD') 当月第n天,
           to_char(SYSDATE, 'D') 当周第n天,
           to_char(SYSDATE, 'DY') 星期几,
           to_char(SYSDATE, 'Q') 当年第n季度,
           to_char(SYSDATE, 'WW') 当年第n周,
           to_char(SYSDATE, 'W') 本月第n周,
           to_char(SYSDATE, 'HH24') 24小时制,
           to_char(SYSDATE, 'HH12') 12小时制
      FROM dual;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    二、常用日期函数

    2.1 字符串转换为日期:to_date()
    select to_date('2023-11-07 16:35:33', 'yyyy-mm-dd hh24:mi:ss') result from dual;
    
    • 1
    2.2 返回特定日期月份的最后一天:last_day()
    select last_day(sysdate) from dual;
    
    • 1
    2.3 增加或减去月份:add_months()
    -- 增加一个月
    select add_months(sysdate, 1) result from dual;
    -- 减少一个月
    select add_months(sysdate, -1) result from dual;
    -- 前一天
    select sysdate - 1 from dual;
    -- 后一天
    select sysdate + 1 from dual;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    2.4 比较两个时间的月份差:months_between(date1, date2)
    select months_between(sysdate, to_date('2023-02-22', 'yyyy-mm-dd')) from dual;
    
    • 1

    三、项目实例

    3.1 加减时间
    SELECT SYSDATE "当前时间",
           SYSDATE + 1 "加一天",
           SYSDATE - 1 "减一天",
           SYSDATE + (1 / 24) "加一小时",
           SYSDATE + (1 / 24 / 60) "加一分钟",
           SYSDATE + (1 / 24 / 60 / 60) "加一秒钟"
      FROM dual;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3.2 判断当前时间为星期几、几月份、年份
    -- 判断周几:每周的第一天为星期天,星期一为第二天,所以要减一
    SELECT to_char(SYSDATE, 'D') - 1 FROM dual; 
    -- 直接输出今日周几
    SELECT to_char(sysdate, 'day') FROM dual; 
    -- 判断特定日期是星期几
    select to_char(to_date('2023-11-11', 'YYYY-MM-DD'), 'DY') from dual;
    -- 输出特定日期的月份、年份
    SELECT to_char(to_date('2023-11-11', 'YYYY-MM-DD'), 'MM') 当前月份,
           to_char(to_date('2023-11-11', 'YYYY-MM-DD'), 'YYYY') 当前年份
      FROM dual;
    SELECT trunc(SYSDATE, 'DD') 今天的开始,
           trunc(SYSDATE, 'iw') 这周的第一天,
           trunc(SYSDATE, 'MM') 这个月的第一天,
           trunc(SYSDATE, 'q') 这个季度的第一天,
           trunc(SYSDATE, 'YYYY') 今年第一天,
           extract(day from last_day(sysdate)) 当月天数
      FROM dual; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    3.3 两个时间的时间差
    SELECT TIME 具体相差时间,
           floor(TIME) 相差天数,
           CASE
             WHEN TIME < 1 THEN
              trunc(TIME * 24)
             WHEN TIME > 1 THEN
              MOD(trunc(TIME * 24), 24)
             ELSE
              0
           END AS 小时差,
           trunc(TIME * 24 * 60 - 60 * trunc(TIME * 24)) 分钟差,
           trunc(TIME * 24 * 60 * 60 - 60 * trunc(TIME * 24 * 60)) 秒差
      FROM (SELECT to_number(SYSDATE - to_date('1999-02-22 20:20:20', 'YYYY-MM-DD hh24:mi:ss')) AS TIME
              FROM dual)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    3.4 判断当前时间是今年的那一天
    SELECT to_char(SYSDATE, 'D') - 1 本周第几天,
           to_char(SYSDATE, 'DD') 本月第几天,
           to_char(SYSDATE, 'DDD') 本年第几天
      FROM dual;
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    轻量级开源ROS 的机器人设备(2)--设计
    ◢Django 自写分页与使用
    【LeetCode】43. 字符串相乘
    【二分查找生活应用】
    企业IT信息化三阶段:追随、协同,到引领
    关于element-ui的样式覆盖问题
    MFC扩展库BCGControlBar Pro v33.6 - 网格、报表控件功能升级
    新年学新语言Go之二
    jvm gc日志拿取与分析思路
    异常:java lang AbstractMethodError
  • 原文地址:https://blog.csdn.net/IO14122/article/details/134282858