`

java/oracle日期处理

阅读更多
从sql server转移到oracle时间默认格式不存在,哎,晕死了!
后来看到csdn友博客,太好了,看看一个测试类吧!
public class Test{
   public static void main (String args []){ 
   java.util.Date a = new java.util.Date();
   System.out.println(a);
   java.sql.Date b = new java.sql.Date(a.getTime());
   System.out.println(b);
   java.sql.Time c = new java.sql.Time(a.getTime());
   System.out.println(c);
   java.sql.Timestamp d=new java.sql.Timestamp(a.getTime());
   System.out.println(d);
   }
  }
  
  Mon Apr 03 18:00:34 CST 2006
  2006-04-03
  18:00:34
  2006-04-03 18:00:34.388
  
  1. oracle默认的系统时间就是sysdate函数,储存的数据形如25-3-200510:55:33
  2. java 中取时间的对象是java.util.Date。
  3. oracle中对应的时间对象是java.util.Date,java.sql.Time,java.sql.Timestamp、它们都是是java.util.Date的子类。
  4. oracle中与date操作关系最大的就是两个转换函数:to_date(),to_char()。to_date()一般用于写入日期到数据库时用到的函数。to_char()一般用于从数据库读入日期时用到的函数。
  
  DATE、TIME 和 TIMESTAMP:
  SQL 定义了三种与时间有关的数据类型:DATE 由日、月和年组成。TIME 由小时、分钟和秒组成。 TIMESTAMP 将 DATE 和 TIME 结合起来,并添加了纳秒域。
  标准 Java 类 java.util.Date 可提供日期和时间信息。但由于该类包含 DATE 和 TIME 信息而没有 TIMESTAMP 所需的纳秒,因此并不与上述三种 SQL 类型完全相配。
  因此我们定义了 java.util.Date 的三种子类。它们是:
  1. 有关 SQL DATE 信息的 java.sql.Date
  2. 有关 SQL TIME 信息的 java.sql.Time
  3. 有关 SQL TIMESTAMP 信息的 java.sql.Timestamp
  对于 java.sql.Time,java.util.Time 基本类的小时、分钟、秒和毫秒域被设置为零。 对于 java.sql.Date,java.util.Date 基本类的年、月和日域被分别设置为 1970 年 1 月 1 日。这是在 Java 新纪元中的“零”日期。java.sql.date中的日期可以和标准的SQL语句中含有日期的字段进行比较.java.sql.Timestamp 类通过添加纳秒域来扩展 java.util.Date。
  
  oracle中两个转换函数:
  1. to_date() 作用将字符类型按一定格式转化为日期类型:
  具体用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 将得到具体的时间。
  2. to_char():将日期转按一定格式换成字符类型:
  具体用法:to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'')
  
  to_date()与24小时制表示法及mm分钟的显示:
  在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。
  如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
  原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。 oracle默认的系统时间就是sysdate函数,储存的数据形如2005-3-2510:55:33,java 中取时间的对象是java.util.Date。
  select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual
  
  在java对oracle的操作中,对日期字段操作的例子:
  表 book 中有name varchar2(20)//书籍名称,buydate Date //购买日期 两个字段。
  已经创建了数据库连接Connection conn;
  
  方法一、使用java.sql.Date实现比较简单的yyyy-mm-dd格式日期。java.sql.Date不支持时间格式。切记不要使用new java.sql.Date(int year,int month,int date),因为还要处理时间差问题。
  PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
  java.sql.Date buydate=java.sql.Date.valueOf("2005-06-08");
  pstmt.setString(1, "Java编程思想");
  pstmt.setDate(2,buydate );
  pstmt.execute();
 
 方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....)
 
 PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
  java.sql.Timestamp buydate=java.sql.Timestamp.valueOf("2004-06-08 05:33:99");
  pstmt.setString(1, "Java编程思想");
  pstmt.setTimestamp(2,buydate );
  pstmt.execute();
  
方法三、使用oracle 的to_date内置函数
  
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,to_date(?, 'yyyy-mm-dd hh24:mi:ss')");
  String buydate="2004-06-08 05:33:99";
  pstmt.setString(1, "Java编程思想");
  pstmt.setString(2,buydate );
  pstmt.execute();
  附:oracle日期格式参数含义说明
  d:一周中的星期几
  day:天的名字,使用空格填充到9个字符
  dd:月中的第几天
  ddd:年中的第几天
  dy:天的简写名
  iw: ISO标准的年中的第几周
  iyyy:ISO标准的四位年份
  yyyy:四位年份
  yyy,yy,y:年份的最后三位,两位,一位
  hh: 小时,按12小时计
  hh24:小时,按24小时计
  mi:分
  ss:秒
  mm:月
  mon:月份的简写
  month:月份的全名
  w:该月的第几个星期
  ww:年中的第几个星期 

分享到:
评论
1 楼 kg_1997 2016-03-17  
这个方法太棒了,可以不用to_date函数,实在是棒!!!

相关推荐

    Jdk8下载(附:官网下载地址)

    5. **日期和时间API的改进**:Java 8提供了新的`java.time`包,替换原有的`java.util.Date`和`java.util.Calendar`,提供了更强大且易于使用的日期和时间API。 6. ** Nashorn JavaScript引擎**:Java 8引入了一个新...

    java存储oracle中的clob类型

    在处理日期类型时,需要特别注意Java与Oracle之间的时间戳格式不一致可能导致的问题。 **示例代码:** ```java java.util.Date date = new java.util.Date(); PreparedStatement ps = conn.prepareStatement(...

    java操作Oracle

    同样的,处理日期时,可以创建一个方法生成Oracle的`to_date()`函数格式。 尽管`Statement`对象在某些场景下更便捷,但在大量重复执行相同SQL的环境下,`PreparedStatement`对象的预编译特性可以显著提高性能。预...

    java c/s sql srever oracle转换

    比如,Oracle使用`TO_DATE`函数处理日期,而SQL Server使用`CONVERT`。在更新Java代码中的SQL查询时,需要考虑这些差异。 5. **存储过程和函数**:如果应用使用了存储过程,需要将SQL Server的存储过程转换为Oracle...

    java与oracle等数据库类型对应

    在选择使用哪种Java日期类型时,如果数据库中的"Date"类型只需要日期,且业务逻辑不需要处理时间部分,那么可以考虑使用"java.sql.Date"。但如果可能涉及到时间信息,"java.util.Date"则是更好的选择,因为它提供了...

    Java SE 6 API

    7. **国际化和本地化**:`java.text`和`java.util`包中的类支持不同地区的日期、时间、货币和数字格式,帮助开发者创建适应全球市场的应用程序。 8. **反射机制**:`java.lang.reflect`包提供了运行时检查和操作类...

    Oracle Timestamp with Time zone & java

    总结起来,Oracle的Timestamp with Time Zone类型和Java的`ZonedDateTime`类是处理时区敏感日期时间的关键工具。在开发中,理解它们的工作原理,掌握如何在数据库和应用程序之间正确地转换和操作这些数据,对于构建...

    基于Java+Oracle的企业人事管理系统

    【Java+Oracle企业人事管理系统详解】 企业人事管理系统是企业日常运营中的重要组成部分,它负责管理企业内部员工的信息、考勤、薪资、绩效等关键数据。本系统采用Java作为开发语言,Oracle作为数据库管理系统,...

    JAVA连接ORACLE 一个简单的系统

    ### JAVA 连接 ORACLE 实现简单学生信息管理系统 #### 需求分析与系统概述 随着教育行业的信息化发展,学生信息管理系统变得越来越重要。它不仅帮助学校管理者、教师和学生更加有效地处理日常事务,还能确保信息的...

    Oracle公司 Java8 Java SE 8 Programmer I 认证考试1z0-808题库 总167题

    ### Oracle公司 Java8 Java SE ...这些题目不仅检验了Java基础语法的掌握情况,还涵盖了面向对象设计原则、异常处理等多个方面,对于准备参加Oracle Java SE 8 Programmer I认证考试的开发者来说是非常重要的练习资源。

    Oracle 验证是否是日期

    本文将详细介绍一个自定义的Oracle函数`FN_ISDATE_JAVA`,该函数用于判断给定的字符串是否能够转换为有效的日期格式。 #### 函数概述 函数`FN_ISDATE_JAVA`的主要功能是验证输入的字符串是否符合日期格式...

    java和oracle面试题笔试题.docx

    6. 在 Oracle 数据库中存在一张 test 表,记录年份、账户、flag、数据、时间等信息,使用 SQL 语句查询出年份从 2004 至 2009,并且标记为‘Y’的记录,这个问题考察了 Oracle 数据库的日期处理能力和 SQL 语句的...

    java插入oracle中date类型方式.docx

    默认情况下,英文版本的Oracle日期格式为`DD-MON-YY`,而中文版本则为`日-月-年`。在处理日期时,Oracle提供了两个关键的内置函数: - **TO_DATE()函数**:将字符串转换为日期。例如,如果有一个日期字符串`'08-21-...

    从oracle数据库取出日期按格式显示

    在Oracle数据库中处理日期...总之,从Oracle数据库中提取日期并按照特定格式显示,涉及到数据库操作、编程语言中的日期处理机制以及业务需求的理解等多个层面,掌握这些技能对于提升数据处理效率和用户体验至关重要。

    Java版本Oracle SQL Plus

    尽管它的原始界面是基于终端的,但Java版本的Oracle SQL Plus为用户提供了更现代、跨平台的体验。这个工具以其高效、易用和功能全面而受到广大数据库管理员和开发者的欢迎。 在Java版本的Oracle SQL Plus中,用户...

    jdk-8u211-windows-x64.7z

    新的日期和时间API(java.time包)取代了过时的java.util.Date和Calendar,提供了更直观、更易于使用的日期和时间处理功能。 其次,JRE是JDK的一部分,它是运行Java应用程序所必需的环境。它包含了Java虚拟机,负责...

    jdk-8u251-windows-x64.7z

    6. **日期与时间API**:`java.time`包替换原有的`java.util.Date`和`java.util.Calendar`,提供了更强大、更易于使用的日期和时间API。 7. **默认方法**:在接口中添加了默认方法,允许在不破坏向后兼容性的情况下...

    jdk-8公司内网下载

    Java Development Kit(JDK)是Oracle公司提供的用于开发和运行Java应用程序的重要工具包。它包含了Java编译器、Java虚拟机(JVM)、类库和其他必要的工具,使得开发者能够创建、测试和部署Java应用程序。标题“jdk-...

    Java项目:飞机订票系统(java+swing+Oracle)

    《Java项目:飞机订票系统(Java + Swing + Oracle)详解》 在信息技术领域,开发一个功能完善的飞机订票系统是提升效率和服务质量的重要手段。本项目以Java为编程语言,Swing作为图形用户界面(GUI)开发工具,...

Global site tag (gtag.js) - Google Analytics