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/

原文地址:https://www.cnblogs.com/ZiYangZhou/p/8146636.html

时间: 2024-08-03 02:24:27

oracle时间日期处理的相关文章

【Oracle】Oracle时间日期格式

to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,"转换格式" ) 即把给定的日期按照"转换格式"转换. 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月:mon 用简写形式 比如11月或者nov :m

Oracle时间日期函数

ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年                显示值:07        yyy three digits 三位年                显示值:007        yyyy four digits 四位年                显示值:2007                    Month

ORACLE对时间日期的处理(转)

共三部分: 第一部分:oracle sql日期比较: http://www.cnblogs.com/sopost/archive/2011/12/03/2275078.html 第二部分:Oracle 获取当前日期及日期格式 第三部分: 获取昨天: select trunc(SYSDATE-1) from dual; 检查一下: select to_char (trunc(SYSDATE-1),'yyyy-mm-dd HH24:MI:SS') from dual; 获取上个月第一天00:00:0

Oracle 时间,日期 类型函数及参数详解

ORACLE字符数字日期之间转化 Java代码 24 小时的形式显示出来要用 HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; to_date() function 1. 日期格式参数 含义说明 D 一周中的星期几 DAY 天的名字,使用空格填充到 9 个字符 DD 月中的第

Oracle 时间和日期处理

-- Oracle时间 SELECT SYSDATE FROM dual; -- 系统时间 SELECT SYSTIMESTAMP FROM dual; -- 当前系统时间戳 SELECT CURRENT_TIMESTAMP FROM dual; -- 与时区设置有关,返回的秒是系统的,返回的日期和时间是根据时区转换过的 SELECT current_date FROM dual; -- 是对CURRENT_TIMESTAMP准确到秒的四舍五入 select SYSDATE ,systimest

oracle 时间函数

加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from

oracle时间数据格式的分析

在网上看见不少oracle新学者对oracle的时间格式很烦,经常是设计了一个带时间字段的表之后,向表插入数据失败.回想起自己刚开始学习oracle时,也对这个时间格式摸不着头脑,虽然是小小的问题,高手们不屑于讨论,但对初学者来讲,这也是一个不大不小的坎,没找到门路的话, 可能几天都过不去,其实就是一层窗户纸,没什么难的.这里做一个简单的小结,因水平有限,请高手补充指正. 1 oracle对时间格式的数据存贮 oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,

oracle时间处理

--查询日期语言种类 select * from V$NLS_PARAMETERS; select * fromnls_session_parameters --TO_DATE(null)的用法(插入null字段??) select 1, TO_DATE(null) from dual; --实际时间2012-12-04 18:22  测试结果如下: --24小时显示方式---需用  HH24:mi:ss这个形式 select to_char(sysdate,'yyyy-MM-dd HH24:m

oracle sql日期比较

oracle sql日期比较: 在当前时间之前: select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') 在当前时间只后: select * from up_date where up