oracle 日期操作语句总结_oracle

来源:脚本之家  责任编辑:小易  

1.1、DATE这是ORACLE最常2113用的日期类型,它可以保存日期和时5261间,常用日期处理都可以4102采用这种1653类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日date类型在数据库中的存储固定为7个字节,格式为:第1字节:世纪+100第2字节:年第3字节:月第4字节:天第5字节:小时+1第6字节:分+1第7字节:秒+11.2、TIMESTAMP(p)这也是ORACLE常用的日期类型,它与date的区别是不仅可以保存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒),数据库内部用7或者11个字节存储,如果精度为0,则用7字节存储,与date类型功能相同,如果精度大于0则用11字节存储。格式为:第1字节:世纪+100第2字节:年第3字节:月第4字节:天第5字节:小时+1第6字节:分+1第7字节:秒+1第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形注:TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除。1.3、DATE与TIMESTAMP类型内部存储验证1 create table T2 (3 C1 DATE,4 C2 TIMESTAMP(9)5 );67 insert into t(c1,c2) values(date'2010-2-12',timestamp'2010-2-12 13:24:52.234123211');8 insert into t(c1,c2) values(9 to_date('2010-2-12 10:20:30','YYYY-MM-DD HH24:MI:SS'),10 to_timestamp('2010-2-12 13:24:52.123456','YYYY-MM-DD HH24:MI:SS.FF6')11 );12 13 SQL> select c1,dump(c1) c1_d,c2,dump(c2) c2_d from t;C1 C1_D C2 C2_D------------------------ ---------------------------------------- ---------------------------------------- -----------------------------------------------------2010-2-12 Typ=12 Len=7: 120,110,2,12,1,1,1 12-FEB-10 01.24.52.234123211 PM Typ=180 Len=11: 120,110,2,12,14,25,53,13,244,111,2032010-2-12 上午 10:20:30 Typ=12 Len=7: 120,110,2,12,11,21,31 12-FEB-10 01.24.52.123456000 PM Typ=180 Len=11: 120,110,2,12,14,25,53,7,91,202,0以下是为了测试是为了验证TIMESTAMP的小数位存储算法:1 SQL> select c2,dump(c2,16) c2_d16 from t;C2 C2_D16---------------------------------------- --------------------------------------------------------------------------------12-FEB-10 01.24.52.234123211 PM Typ=180 Len=11: 78,6e,2,c,e,19,35,d,f4,6f,cb12-FEB-10 01.24.52.123456000 PM Typ=180 Len=11: 78,6e,2,c,e,19,35,7,5b,ca,0SQL> select to_number('0df46fcb','xxxxxxxx') mydata1,to_number('075bca00','xxxxxxxx') mydata2 from dual;MYDATA1 MYDATA2---------- ----------234123211 1234560002、常见问题2.1、如何取当前时间sysdate--返回当前系统日期和时间,精确到秒systimestamp--返回当前系统日期和时间,精确到毫秒2.2、如何进行日期运算日期型数据可以与数值加减得到新的日期,加减数值单位为天sysdate+1--取明天的当前时间sysdate-1/24--取当前时间的前一个小时SQL> select sysdate d1,sysdate+1 d2,sysdate-1/24 d3 from dual;D1 D2 D3------------------------ ------------------------ ------------------------2010-5-13 下午 10:55:16 2010-5-14 下午 10:55:16 2010-5-13 下午 09:55:162.3、如何求两个日期的间隔时间可以直接把两个日期相减,返回的单位为天,小时及分秒会换算成小数SQL> select date'2012-01-01'-sysdate from dual;DATE'2012-01-01'-SYSDATE------------------------597.0460300925932.4、如何将日期转字符to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')2.5、如何将字符转日期to_date('2010-02-24 15:01:54','YYYY-MM-DD HH24:MI:SS')to_timestamp('1999-12-01 11:00:00.123456','YYYY-MM-DD HH:MI:SS.FF6')3、常用日期函数3.1、TO_CHAR(DATE,FORMATSTR)--格式化日期成字符SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') d1 from dual;D1------------------------2010-05-13 22:56:38TO_CHAR的其它用法示例1 SQL> SELECT TO_CHAR(date '2010-02-12', 'D') week_dayth,--周第几天(1-7),星期天=1,星期一=2,星期二=3,星期三=4,星期四=5,星期五=6,星期六=72 TO_CHAR(date '2010-02-12', 'DD') month_dayth,--月第几天3 TO_CHAR(date '2010-02-12', 'DDD') year_dayth,--年第几天4 TO_CHAR(date '2010-02-12', 'DAY') weekdayname,--英文星期名5 _CHAR(date '2010-02-12', 'w') month_weekth,--月第几周(0-4)6 TO_CHAR(date '2010-02-12', 'ww') year_weekth--年第几周(0-53)7 FROM DUAL;WEEK_DAYTH MONTH_DAYTH YEAR_DAYTH WEEKDAYNAME MONTH_WEEKTH YEAR_WEEKTH---------- ----------- ---------- ----------- ------------ -----------6 12 043 FRIDAY 2 073.2、TO_DATE(CHAR,FORMATSTR) --将字符转换成日期to_date('2010-02-24 15:01:54','YYYY-MM-DD HH24:MI:SS')格式备注:HH表示12小时进制,HH24表示采用24小时进制,MM表示月份,MI表示分钟。3.3、TRUNC(DATE)--返回DATE的日期部分,时间为0点0分0秒SQL> select sysdate d1,trunc(sysdate) d2 from dual;D1 D2------------------------ ------------------------2010-5-13 下午 10:59:18 2010-5-133.4、EXTRACT(DATA FROM DATEVALUE)--返回DATE的某一部份内容如果DATEVALUE为DATE类型,则DATA可以是(YEAR、MONTH、DAY)如果DATEVALUE为TIMESTAMP类型,则DATA可以是(YEAR、MONTH,DAY、HOUR、MINUTE、SECOND)SQL> select sysdate d1,EXTRACT(YEAR FROM sysdate) thisyear,EXTRACT(MINUTE FROM systimestamp) thism from dual;D1 THISYEAR THISM------------------------ ---------- ----------2010-5-13 下午 11:05:06 2010 53.5、ADD_MONTHS(DATE,MONTHS) --在DATE增加月份得到新日期ADD_MONTHS(sysdate,3) --当前日期加3个月ADD_MONTHS是一个比较有意思的函数,它会自动处理大小月及闰月,如下所示1 SQL> select ADD_MONTHS(date '2010-2-12', 1),2 ADD_MONTHS(date '2010-2-27', 1),3 ADD_MONTHS(date '2010-2-28', 1),4 ADD_MONTHS(date '2010-1-31', 1)5 from dual6 ;ADD_MONTHS(DATE'2010-2-12',1) ADD_MONTHS(DATE'2010-2-27',1) ADD_MONTHS(DATE'2010-2-28',1) ADD_MONTHS(DATE'2010-1-31',1)----------------------------- ----------------------------- ----------------------------- -----------------------------2010-3-12 2010-3-27 2010-3-31 2010-2-283.6、LAST_DAY(DATE)--返回日期所在月份的最后一天日期SQL> select LAST_DAY(date '2010-2-12') from dual;LAST_DAY(DATE'2010-2-12')-------------------------2010-2-283.7、NEXT_DAY(DATE,CHAR) --从给定日期开始返回下个CHAR指定星期的日期SQL> SELECT NEXT_DAY(date'2010-2-21', 'MONDAY') NEXTDAY1,NEXT_DAY(date'2010-2-22', 'MONDAY') NEXTDAY2 FROM DUAL;NEXTDAY1 NEXTDAY2----------- -----------2010-2-22 2010-3-1TO_YMINTERVAL(CHAR)--返回[年-月]格式构成的时间间隔,一般用于日期加减运算3.8、TO_DSINTERVAL(CHAR)--返回[天 时:分:秒]格式构成的时间间隔,一般用于日期加减运算SQL> select date'2010-2-12'+TO_YMINTERVAL('01-02') newdate from dual;NEWDATE------------------------------2011-4-123.9、NUMTOYMINTERVAL(N,CHAR) --返回CHAR中指定单位的时间间隔数值,一般用于日期加减运算char可以为YEAR,MONTH1 SQL> select date '2010-2-12' + NUMTOYMINTERVAL(1, 'year') newdate1,2 date '2010-2-12' + NUMTOYMINTERVAL(1, 'month') newdate23 from dual;NEWDATE1 NEWDATE2----------- -----------2011-2-12 2010-3-123.10、NUMTODSINTERVAL(N,CHAR) --返回CHAR中指定单位的时间间隔数值,一般用于日期加减运算char可以为DAY,HOUR,MINUTE,SECOND1 SQL> select date '2010-2-12' + NUMTODSINTERVAL(1, 'DAY') newdate1,2 date '2010-2-12' + NUMTODSINTERVAL(1, 'HOUR') newdate23 from dual;NEWDATE1 NEWDATE2----------- ------------------------2010-2-13 2010-2-12 上午 01:00:00,有以下几种2113:DATE,包含 世纪、年、月、日、时、分5261、秒。4102占用7个字节1653,上面每个部分1个字节。TIMESTAMP 日期时间 可以包含到小数秒。TIMESTAMP WITH TIME ZONE 包含时区信息。TIMESTAMP WITH LOCAL TIME ZONE包含时区信息,自动调整。拓展回答:Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。总之,逻辑结构由逻辑存储结构(表空间,段,范围,块)和逻辑数据结构(表、视图、序列、存储过程、同义词、索引、簇和数据库链等)组成,而其中的模式对象(逻辑数据结构)和关系形成了数据库的关系设计。本回答被网友采纳,在Windows下运行应2113用程序时出现非法操作的提示5261此类故障引起4102原因较多,在如下1653几钟可能:(1) 系统文件被更改或损坏,倘若由此引发则打开一些系统自带的程序时就会出现非法操作,(例如,打开控制面板)(2) 驱动程序未正确安装,此类故障一般表现在显卡驱动程序之止,倘若由此引发,则打开一些游戏程序时就会产生非法操作,有时打开一此网页也会出现这种程况。(3) 内存质量不好,降低内存速度也可能会解决这个问题。(4) 软件不兼容,如,IE 5。5在Windows 98 SE 上,当打开多个网页也会产生非法操作www.zgxue.com防采集请勿采集本网。

1.查询当前年、月、周相关时间

Oracle数据库中从时间中截取日和月 TO_CHAR( SYSDATE, 'DD' ) 这个是从 SYSDATE 中,取得 日的数据 TO_CHAR( SYSDATE, 'MM' ) 这个是从 SYSDATE 中,取得 月的数据

1.1.查询当前年份

用to_char()吧, to_char(date,'YYYY')--年 to_char(date,'MM')--月 to_char(date,'DD')--日 to_char(date,'HH')--小时 to_char(date,'MI')--分 to_char(date,'SS')--秒 可以随意组合 比如to_char(date,'YYYY-MM-DD HH24:MI:SS') 也可以to_char(

SELECT TO_CHAR(SYSDATE,'YYYY') AS YEAR FROM DUAL--查询当前年份SELECT TO_CHAR(SYSDATE,'YYY') AS YEAR FROM DUAL--查询当前年份后两位SELECT TO_CHAR(SYSDATE,'YY') AS YEAR FROM DUAL--查询当前年份最后两位SELECT TO_CHAR(SYSDATE,'Y') AS YEAR FROM DUAL--查询当前年份最后一位

代码如下: d2 := to_date('20190528','yyyymmdd'); d3 := to_date('20170101','yyyymmdd'); d4 := sysdate; if d1>d3 then --格式不同进行比较 dbms_output.put_line('d1>d3'); end if; if d2>d3 then --格式相同比较 dbms_output.put_line('d2

1.2.查询当前年份第几天

oracle中读取时间,用to_char函数。 如: select to_char(sysdate,'yyyy-mm-dd') from dual; to_char函数date/time 转换的模板:

SELECT TO_CHAR(SYSDATE,'DDD') AS DAYS FROM DUAL

1.1、DATE 这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日 date类型在数据库中的存储固定为7个字节,格式为: 第1字节:世纪+100 第2字

1.3.查询当前月份第几天

SELECT TO_CHAR(SYSDATE,'DD') AS DAYS FROM DUAL

1.4.查询当前周的星期几

SELECT TO_CHAR(SYSDATE,'dy') AS WEEK FROM DUALSELECT TO_CHAR(SYSDATE,'day') AS WEEK FROM DUAL

2.查询当前第几季度

SELECT TO_CHAR(SYSDATE,'Q') AS JD FROM DUAL

3.查询当前在一年内是第几周

SELECT TO_CHAR(SYSDATE,'IW') AS WEEKNUM FROM DUALSELECT TO_CHAR(SYSDATE,'WW') AS WEEKNUM FROM DUALSELECT TO_CHAR(SYSDATE,'W') AS WEEKNUM FROM DUAL

4.查询当前某年某月有多少天

SELECT TO_CHAR(last_day(to_date('2019/02/01','YYYY/MM/DD')),'DD') AS MONTH_DAYS_NUMBER FROM DUAL

5.查询当前的日期格式

SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') AS MONTH FROM DUAL--获取当前日期的'YYYY/MM/DD'格式:2020/01/02SELECT TO_CHAR(SYSDATE,'YYYYMMDD') AS MONTH FROM DUAL--获取当前日期的'YYYYMMDD'格式:20200102SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH:MI:SS') AS now FROM DUAL--获取当前时间,精确到秒的12小时制格式:20200102 03:18:25SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') AS now FROM DUAL--获取当前时间,精确到秒24小时制的格式:20200102 15:18:13SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS:PM:DY') AS now FROM DUAL--获取当前时间的格式,显示上、下午和星期几:2020/01/02 15:17:59:下午:星期四

6.查询距离当前时间一段时间间隔的时间,当前时间之前用“-”当前时间之后用“+”

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7' second,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7秒前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7' minute,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7分钟前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'hour ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7小时前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'day ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7天前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'month ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7月前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - INTERVAL '7'year ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间的7年前时间SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS NOW,TO_CHAR(SYSDATE - 8*INTERVAL '7'hour ,'YYYY/MM/DD HH24:MI:SS') AS PAST FROM DUAL --查询当前时间参数年、月、日、时、分、秒乘以一个数字倍数之前的时间

以上就是oracle 日期操作语句总结的详细内容,更多关于oracle 日期操作的资料请关注真格学网其它相关文章!

SQL> SELECT 2 TO_CHAR(SYSDATE, 'YYYY"年"MM"月2113"DD"日"') A 3 FROM 4 dual;A----------------------------------2013年03月27日注:当格式字符串当中,52614102 存在 自定义的字1653符信息的时候, 需要使用双引号, 标记那些, 直接显示,不需要额外处理的字符,select to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'||to_char(sysdate,'dd')||'日' from dual本回答被网友采纳,当前连2113接更改:5261alter session set nls_date_format = ‘yyyy-mm-dd’4102; oracle数据系统更1653改:alter system set nls_date_format = ‘yyyy-mm-dd’;,  alter session set nls_date_format = ‘yyyy-mm-dd’;    ,select to_char(sysdate,'yyyy年mm月dd日') from dual;内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • oracle中的日期加减操作实例介绍
  • oracle时间日期操作方法小结
  • oracle关于时间/日期的操作
  • 详解oracle sequence用法
  • oracle如何获取系统当前时间等操作实例
  • oracle数据库下统计专营店的男女数量的语句
  • oracle性能究极优化(oracle 性能优化)
  • 彻底删除oracle数据库的方法
  • oracle常见错误代码的分析与解决三
  • oracle中三种表连接算法的总结
  • redhat 6.2 下 oracle 11g r2的安装详解
  • oracle求字符串长度函数length()和hengthb()简介
  • oracle数据库密码重置、导入导出库命令示例应用
  • oracle中如何将sysdate格式化为yyyy年mm月dd日?
  • oracle 中日期的类型都有哪些?
  • oracle中如何设置年月日?
  • oracle 时间字段是年月日时分秒怎么根据年月日分组
  • Oracle数据库中从时间中截取日和月
  • 我想用oracle数据库中分别提取出date年月日和时间...
  • oracle 日期比较,只比较年月日怎么写?
  • oracle中读取时间,只显示年,月,日,怎么写sql语句
  • oracle 中日期的类型都有哪些
  • 如何取得oracle中日期的时分秒
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页oracle中的日期加减操作实例介绍oracle时间日期操作方法小结oracle关于时间/日期的操作详解oracle sequence用法oracle如何获取系统当前时间等操作实例oracle数据库下统计专营店的男女数量的语句oracle性能究极优化(oracle 性能优化)彻底删除oracle数据库的方法oracle常见错误代码的分析与解决三oracle中三种表连接算法的总结redhat 6.2 下 oracle 11g r2的安装详解oracle求字符串长度函数length()和hengthb()简介oracle数据库密码重置、导入导出库命令示例应用oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍win7彻底卸载oracle 11g图文步骤(靠谱)利用windows任务计划实现oracle的定期备份深入oracle的left join中on和where的区别oracle中left join和right join的区别浅谈oracle数据库常用命令整理(实用方法)oracle 在一个存储过程中调用另一个返回游实例讲解临时处理去重 80w 数据时夯死现象详解oracle在out参数中访问光标oracle存储过程、包、方法使用总结(推荐)oracle数据库"记录被另一个用户锁住"解决
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved