zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    Android启动报错:install failed invalid apk
    一个资源丰富的在线小程序社区推荐
    一个好用的在线微信二维码设计网站
    一个资源丰富的在线小程序社区推荐
    百度地图API的使用示例
    百度地图API的使用示例
    vue.js提交按钮时简单的if判断表达式示例
    vue.js代码开发最常见的功能集合
    如何运行vue项目(维护他人的项目)
    ES6-----学习系列七(函数扩展)
  • 原文地址:https://www.cnblogs.com/ZiYangZhou/p/8146636.html
Copyright © 2011-2022 走看看