• oracle时间日期处理


    日期处理

    时间日期类型

    • DATE 日期时间类型,包含的时间部分有年、月、日、时、分、秒,不包含秒的小数位和时区。合法的数据范围是January 1, 4712 BC, to December 31, 9999
      AD。默认的格式是通过NLS_
      DATE_FORMAT显示地设置或者通过NLS_TERRITORY隐式地设置。数据大小为固定的7位。
    • TIMESTAMP [(fractional_seconds_precision)] 时间戳类型,包含有年、月、日、时、分、秒,并且秒可以带有精度,精度范围是0位到9位,默认的精度是6位,不带有时区。默认的格式是通过NLS_TIMESTAMP_FORMAT参数显示指定或者通过NLS_TERRITORY参数隐式指定。数据的大小为7-11位,具体的大小取决于设置的精度。
    • TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE 带有时区的时间戳类型。
    • TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE 带有时区的时间戳类型。
    • INTERVAL YEAR [(year_precision)]TO MONTH 存储带有年月的时间期间。
    • INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)] 存储带有日、时、分、秒的时间期间。

    日期函数

    • TO_CHAR (datetime,fmt) 日期转格式化,返回类型为VARCHAR2。datetime输入的日期,fmt表示转换的格式。
    SELECT to_char(sysdate,'yyyy-mm-dd') FROM dual;
    select to_char(sysdate,'dy') from dual; #获取星期几
    
    • TO_DATE(char,fmt) 字符串转日期,返回类型为DATE。char为输入的日期字符串,fmt表示转换的格式。
    SELECT to_date('2017-09-13','yyyy-mm-dd') FROM dual;
    SELECT to_char(TO_DATE('7','dd'),'yyyy-mm-dd')FROM dual;
    
    • SYSDATE 返回系统的当前时间日期,类型是DATE
    • TRUNC(datetime,fmt) 通过指定的格式截取时间,返回类型为DATE
    #当前时间2017-09-13 11:30:32
    SELECT TO_CHAR(TRUNC(SYSDATE,'hh'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-09-13 11:00:00  
    SELECT TO_CHAR(TRUNC(SYSDATE,'yy'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-01-01 00:00:00
    SELECT TO_CHAR(TRUNC(SYSDATE,'mm'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-09-01 00:00:00
    SELECT TO_CHAR(TRUNC(SYSDATE,'mi'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-09-13 11:30:00
    
    • LAST_DAY(date) 返回系统当月的最后一天的日期,类型为DATE
    SELECT LAST_DAY(SYSDATE) from DUAL;
    

    日期运算

    • 对于日期类型我们可以对其执行加法和减法运算,不能执行乘法和除法运算。
    • 一个时间类型的数据只可以和INTERVALNumeric类型的数据执行加法运算,结果为时间类型。
    • Date类型和Date类型相减为Number,表示相差的天数,Date类型和timestamp类型相减为INTERVAL,为INTERVAL,Numeric相减为Date。
    • ORACLE自动将timestamp转换为date类型的值,而且将Number类型的常数转换为算术的日期,间隔表达式表示一些天数。例如:SYSDATE + 1 表示的是明天的日期;SYSDATE -7表示一周以前;SYSDATE + (10 / (24 * 60))表示10分钟以后的时间。
    /**
    相差的时间,单位小时
    */
    SELECT (TO_DATE('2017-9-10 12:23:12','yyyy-mm-dd hh24:mi:ss') - TO_DATE('2017-9-10 10:23:12','yyyy-mm-dd hh24:mi:ss')) * 24 FROM DUAL;
    
    • 获取月份之差
    select months_between(to_date('2017-12-30','yyyy-mm-dd'),to_date('2017-01-01','yyyy-mm-dd')) from dual;
    

    参考

    https://docs.oracle.com/en/database/

  • 相关阅读:
    使用HttpClient发送请求、接收响应
    jdbc操作
    数据库通用Jdbc操作
    将WSDL文件生成的Java文件
    数据结构_线性表_链表实现
    15年第六届蓝桥杯第七题_手链样式_(stl_string)
    16年第七届蓝桥杯第九题_密码脱落_(贪心)
    16年第七届蓝桥杯第七题_剪邮票
    16年第七届蓝桥杯第三题_方格填数
    Codeforces_789C_(dp)
  • 原文地址:https://www.cnblogs.com/ZiYangZhou/p/8146636.html
Copyright © 2020-2023  润新知