zoukankan      html  css  js  c++  java
  • 关于oracle中对时间日期进行的一些运算(求日期的差值等)

    // 没有区分大小写

    select * from hrk_person where EMPLOYE_DATE>to_date('20170615','yyyy-mm-dd hh24:mi:ss')
    select * from hrk_person where EMPLOYE_DATE> date '2017-06-15'

    //求日期差时要注意日期的格式

    1..获取等操作

    --获取系统日期
    select sysdate from dual;
    --获取系统时间
    select current_timestamp from dual;

    --格式化日期
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
    --将字符串转换为日期
    select to_date('2019-01-01 21:01:01','yyyy-mm-dd hh24:mi:ss') from dual; --24小时制
    select to_date('2019-01-01 01:01:01','yyyy-MM-dd hh:mi:ss') from dual; --12小时制

    --在系统时间增加月份
    select add_months(sysdate,3) from dual;
    --在系统时间增加年份
    select add_months(sysdate,3*12) from dual;

    --获取日期中该月的最后一天
    select last_day(sysdate) from dual;
    select last_day(to_date('2014-02-01 23:12:12','yyyy-mm-dd hh24:mi:ss')) from dual;
    --获取下个星期二是日期
    select next_day(sysdate,3) from dual; --星期日 = 1 星期一 = 2 星期二 = 3 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7
    --获取日期/时间的单独部分,比如年、月、日、小时、分钟、秒
    --ear、month、day、hour、minute、second
    select extract(year from sysdate) from dual;

    2.计算两个日期之间的时间差(年、月、日、时、分、秒)

    --计算两个日期之间相差多少月
      select months_between(add_months(sysdate,5),sysdate) from dual;
      select months_between(
        to_date('2021-12-2 23:45:57','yyyy-mm-dd hh24:mi:ss') , 
        to_date('2001-11-2 23:45:57','yyyy-mm-dd hh24:mi:ss')
      ) as 相差月数
      from dual;
    --计算两个日期之间相差多少年,就在求月数的基础上除12

    --计算两个日期之间相差多少天(要先将字符串转换为日期类型)

      select TO_NUMBER(

        to_date('2002-12-2 23:45:57','yyyy-mm-dd hh24:mi:ss') - to_date('2001-11-2 23:45:57','yyyy-mm-dd hh24:mi:ss')

      )    as 相差天数
      from dual;
      select TO_NUMBER(

        to_date(to_char(add_months(sysdate,1),'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') -

        to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')

      )    as 相差天数

      from dual;

    --计算两个日期之间相差多少个小时
      select TO_NUMBER(to_date('2002-12-2 23:45:57','yyyy-mm-dd hh24:mi:ss') - to_date('2001-11-2 23:45:57','yyyy-mm-dd hh24:mi:ss'))*24
      as 相差小时数
      from dual;
    --相差分钟数就在后面*24*60,秒数在后面*24*60*60

    求分钟:

    SELECT CEIL((TO_DATE('2016-07-19 10:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24*60  )  as HOURS FROM DUAL;

    执行结果如下

    HOURS 
    3

    求小时:

    SELECT CEIL((TO_DATE('2016-07-19 15:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24  )  AS minutesFROM DUAL;

    执行结果如下

    minutes
    6

    求秒:

    SELECT CEIL((TO_DATE('2016-07-19 10:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24*60*60  )   as SECOND FROM DUAL;

    执行结果如下:

    SECOND
    140



  • 相关阅读:
    深刻理解ajax的success和error的实质和执行过程
    再次遇到 js报错: expected expression, get ')' 或 get ';', '<'等错误?
    怎样让一行中的 文字 input输入框 按钮button它们在同一个高度上? 它们中的文字 是 垂直居中对齐
    怎样阻止input file文件域的change/onchange事件多次重复执行?
    如何在 messager/alert/confirm等消息提示框中 获取 / 设置 嵌入 html内容中的 input[type=checkbox]等的选中状态?
    异步函数造成的问题: 怎样确保异步执行的FileReader onload成功后才执行后面的语句?
    如何退出vim的宏记录模式
    bs模态框中的form获取或设置表单及其中元素用nam不能用id?
    关于git 的理解3
    关于git的理解2
  • 原文地址:https://www.cnblogs.com/kelly1314/p/10971937.html
Copyright © 2011-2022 走看看