`
nicegege
  • 浏览: 580138 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle数据库日期总结

 
阅读更多

    oracle数据库对日期类型数据的操作很详细,日期类型数据表示形式涉及到系统时间时区,时间格式等。而且经常用到to_date('String','format'),to_char(Date,'format')等oracle系统函数。所以日期类型数据的操作有点复杂,操作oracle日期类型数据时注意的东西比较多。

1.sysdate表示当前日期,oracle数据库表示当前日期的对象。经常用到获取当前日期:select sysdate from dual;

2.to_date('String','format')函数表示把字符串转换为format格式的日期对象,这个函数功能很强大。String字符串可中有分隔符,分隔符可以是空格,/,\等除数字和字母以外的符号。但是日期和时间各自的分割符号要一样,两者的可以不一样。format格式可以有很多种,但是要包含Strring字符串的格式,否则to_date无法转换字符串为日期格式,因为缺少格式。

to_date格式(以时间:2007-11-02   13:45:25为例)

  Year:

  yy two digits 两位年                显示值:07

  yyy three digits 三位年                显示值:007

  yyyy four digits 四位年                显示值:2007

  Month:

  mm    number     两位月              显示值:11

  mon    abbreviated[小型的;简短的] 字符集表示          显示值:11月,若是英文版,显示nov

  month spelled out 字符集表示          显示值:11月,若是英文版,显示november

  Day:

  dd    number         当月第几天        显示值:02

  ddd    number         当年第几天        显示值:02     select to_date(sysdate,'dy') from dual   ,
select to_date('110814 08:13:43','yy-MM-dd HH:mm:ss') from dual

  dy    abbreviated 当周第几天简写    显示值:星期五,若是英文版,显示fri

  day    spelled out   当周第几天全写    显示值:星期五,若是英文版,显示friday

  ddspth spelled out, ordinal twelfth

  Hour:

  hh    two digits 12小时进制            显示值:01

  hh24 two digits 24小时进制            显示值:13

  Minute:

  mi    two digits 60进制                显示值:45

  Second:

  ss    two digits 60进制                显示值:25

  其它

  Q     digit         季度                  显示值:4

  WW    digit         当年第几周            显示值:44

  W    digit          当月第几周            显示值:1

  24小时格式下时间范围为: 0:00:00 - 23:59:59....

  12小时格式下时间范围为: 1:00:00 - 12:59:59 ....

 

1.获取当前日期的年,月,日,时,分,秒

      select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年

  select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月

  select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日

  select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时

  select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分

  select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

2.求某天是星期几

     select to_char(sysdate,'dy') from dual;

     select to_char(to_date('20120323','yyyy/mm/dd'),'day') from dual

3.两个日期间的天数(oracle数据库两个日期相减获得是天数)

select floor(sysdate-to_date('20111203','yyyy-mm-dd')) from dual;

select to_char(sysdate-to_date('20111203','yyyy-mm-dd')) from dual;//返回带小数点天数

4.两个日期间的月数

select floor(months_between(sysdate,to_date('20120101','yyyy-mm-dd'))) from dual;

5.查看今年有多少天

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual

6.设置日期语言

alter session set nls_date_language='simple chinese';
alter session set nls_date_language='american';

7.next_day(date,day)的用法

date表示一个日期,day表示周日到下周六,就是1-7.

select next_day(sysdate,7) from dual;//下一个周六

select next_day(sysdate,1) from dual;//下一个周日

8.yyyy与rrrr的区别

      'YYYY99 TO_C

  ------- ----

  yyyy 99 0099

  rrrr 99 1999

  yyyy 01 0001

  rrrr 01 2001

9.不同时区的处理

  select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate

  from dual;

         AST 大西洋标准时
         ADT 大西洋夏令时
         BST 白令标准时
         BDT 白令夏令时
         CST 中央标准时
         CDT 中央夏令时
         EST 东部标准时
         EDT 东部夏令时
         GMT 格林威治平均时
         HST 阿拉斯加夏威夷标准时
         HDT 阿拉斯加夏威夷夏令时
         MST Mountain标准时
         MDT Mountain夏令时
         NST 纽芬兰标准时
         PST 太平洋标准时
         PDT 太平洋夏令时
         YST YuKon标准时
         YDT YuKon夏令时
10.5秒钟一个间隔

Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')

  from dual

11.查找月的第一天,最后一天

      SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,

  Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,

  Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,

  LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month

  FROM dual;

总结:oracle中没有timestamp类型的日期类型,只有date类型日期。2个日期类型数据相互减法以后获得天数。例如:MM和mm都表示月,而mm不像java里的分钟格式,所以oracle中代表分钟的格式是mi.

例如:

select  (to_date('2013-8-9 00:00:00','yyyy-mm-dd hh24:mi:ss')- sysdate  ) dt from dual;

sysdate:2013/8/9 13:38:21

返回-0.566388888888889,表明半天。而且是负的。表示前面的时间比后面的早。

 

 

分享到:
评论

相关推荐

    oracle实验报告

    Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200); BEGIN if dictionary_obj_type = 'USER...

    Oracle11g从入门到精通2

     Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。  全书结构合理、内容翔实、示例丰富...

    OracleSQL疑难解析

    Oracle SQL疑难解析内容简介:《Oracle SQL疑难解析》总结了针对Oracle数据库编写SQL时经常碰到的各种问题,提供大量现成的解决方法,包括汇总和聚合数据、多表数据查询、生成和获取数据、通用查询模式、日期和时间...

    oracle使用管理笔记(一些经验的总结)

    5.oracle数据库启动流程 9 6.oracle登录认证方式 10 7.oracle丢失管理员密码怎么办 11 8.oracle表管理 12 9.oracle基本查询 14 oracle基本所有查询案例 16 10.oracle分页查询 21 (1)删除重复记录 22 11.oracle合并...

    csv-dbf-javaMail-javascript-oracle-svn-sql日期格式

    csv、dbf上传下载, javaMail邮件 javascript中的各种条件的1....oracle数据库连接 svn简单使用 sql日期格式 这些都是 我长期奋战 时在网上找来的资料!现在我做了一下总结! 在上传上来供大家使用!

    ORACLE查询表最近更改数据的方法

    修改项目时,涉及到了Oracle中许多表的修改(包括:增加、删除字段,修改注释等)。由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了。后来在网上查找了一些资料,例如: 代码如下: 1、select uat...

    会议管理系统数据库设计文档.doc

    在oracle数据库设计中,一 般来说,对于定长的字符数据字段,取字符类型(char),对于不定长的,取变长字符类 型(varchar)。 2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。如:货物 是否配送为...

    Oracle11.2.0.1如何升级到11.2.0.3 Oracle同版本升级

    Oracle数据库升级也并非简单的事,这篇文章对Oracle那点事做了较详细的介绍:Oracle数据库升级或数据迁移方法研究 我还属于Oracle的菜鸟,就不献丑介绍了。 下面我就简单总结下,Oracle同版本升级的经历:  升级...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    关系型数据库管理系统之MySql学习总结

    文章目录数据库介绍MySql介绍添加数据导入数据查询数据内连接左外连接/右外连接子查询约束函数聚合函数分组函数数学函数字符串函数日期时间函数条件判断函数系统信息函数加密函数格式化函数自定义函数视图事务存储...

    Oracle知识整理笔记

    小编整理的一篇关于Oracle知识的学习笔记,希望对大家有帮助。...一个Oracle数据库可以有多个用户,用户的权限不同,进入到数据库中看到的数据对象也是不同的。 2.Oracle中基本的概念和关系  我总结了一

    oracle 日期时间函数使用总结

    一、常用日期数据格式 1. 获取年的最后一位, 两位, 三位, 四位 select to_char(sysdate,’Y’) from dual; — 获取年的最后一位select to_char(sysdate,’YY’) from dual; — 获取年的最后两位select to_char...

    数据库课程设计-JAVA个人记账管理系统.doc.doc

    2.3 设计环境(1)WINDOWS 2000/2003/XP系统(2)Oracle数据库管理系统2.4 开发语言PL/SQL语言3 分析和设计3.1 系统E- 综合运用JAVA的基础和算法设计的基本原则,用PLSQL Developer,orcale等工具实现。功能包括收入...

    精通SQL 结构化查询语言详解

    2.3.2 Oracle数据库体系结构  2.3.3 Oracle数据库系统结构 2.3.4 使用SQL*Plus执行SQL语句 2.4 PL/SQL简介  2.4.1 PL/SQL的特点  2.4.2 PL/SQL程序结构 第3章 创建、修改和删除表 3.1 表的基础知识  ...

    精通SQL--结构化查询语言详解

    2.3.1 oracle数据库软件组成 29 2.3.2 oracle数据库体系结构 29 2.3.3 oracle数据库系统结构 30 2.3.4 使用sql*plus执行sql语句 31 2.4 pl/sql简介 32 2.4.1 pl/sql的特点 32 2.4.2 pl/sql程序结构 33 第3章 ...

    sql表关系.txt

    mysql学习总结, 表与表的关系 表:具有固定列数和任意行数。 数据库:一些关联表的集合。 主键:一个数据表只能包含一个主键,使用主键来查询数据。 外键:用来关联两张表。 索引:快速访问数据库表的特定信息...

    Oracle数学相关函数小结

    本文总结了Oracle数学相关函数。分享给大家供大家参考,具体如下: 1.绝对值:abs() select abs(-2) value from dual; 2.取整函数(大):ceil() select ceil(-2.001) value from dual;(-2) 3.取整函数(小)...

Global site tag (gtag.js) - Google Analytics