A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 孙百鑫 于 2013-6-27 16:32 编辑

好多时候在java中插入的时间类型保存不到数据库中,特别是在换数据库时时间类型的转换问题。请提点建议,不太想用string类型保存时间。

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助。 new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前。 new Date(long date) : 分配 Date 对象并初始化此对象,以表示自从标准基准时间     (称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。 long getTime() :返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 String toString() :把此 Date 对象转换为以下形式的      String: dow mon dd hh:mm:ss zzz yyyy      其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。    ***************************************** static Calendar getInstance() :使用默认时区和语言环境获得一个日历。   Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。  long getTimeInMillis() :返回此 Calendar 的时间值,以毫秒为单位。  void setTime(Date date) :使用给定的 Date 设置此 Calendar 的时间。  void setTimeInMillis(long millis) :用给定的 long 值设置此 Calendar 的当前时间值。    **** ************************************* new SimpleDateFormate("yyyy-MM-dd hh:mm:ss").format(new Date());返回String类对象    总结: 1、获得系统当前时间     获得long型: System.currentTimeMillis()     获得Data型:new Data();     获得Calendar型:             Calendar c = Calendar.getInstance();             c.setTime(System.currentTimeMillis();     通常获得Calendar后,可以对各个字段进操作; 2、时间的各种类型之间的转换:     Calendar 到Date:c.getTime() 返回一个Date对象     Date 到 Calendar:c.setTime():返回一个Calendar对象 3、关于数据库中时间的存储对象     (1)表示日期和时间的DATA类型,DATA字段中存储的值包含有与世纪、年、月、日、小时、分钟、和秒相对应的“组成部分”,它通过不同的方法显示和操作,它有效地独立于任何塔顶字符串格式     (2)从Oracle 9i开始提供TIMESTAMP类型是DATE类型的有效扩展形式,它提供更大的时间精度,支持多大九位的小孩,同时还能存储时区信息     (3)从Oracle 9i开始INTERVAL类型,它支持存储时间差,并且可以与DATE或者TIMESTAMP加法运算以生成一个新的DATE或者TIMESTAMP      使用SYSDATE选择当前的系统时间,返回DATE类型的值,是数据库所在的操作系统的当前日期和时间     DATE类型的内部表示形式:执行select DUMP(sysdate) from dual;     Typ=13 Len=8: 218,7,3,23,11,27,11,0 结果中逗号分割的值对应于Oracle存储日期和时间的每个部分,(从世纪到秒)所使用的字节 4、DATE对象与字符串之间进行转换     TO_DAT()和TO_CHAR():这两个函数都有三个参数,一个是要转化的值,一个是可选的格式掩码和一个用于指定语言的可选字符串     to         select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;         select to_date('20100323','YYYYMMDD') from dual;         select ename, to_char(hiredate,'ddthMon,YYYY') from emp         where hiredate between          to_date('1980-01-01','YYYY-MM-DD')         and         to_date('1985-01-01','YYYY-MM-DD') 5、常用操作     把程序的数据存到数据库中:         当程序中是String 类型时,SQL文应该用上         to_date(hiredate,'yyyy-mm-dd hh24:mi:ss')这样放到数据库中就是date类型         当程序中是Date类型时,必须先转为String类型,利用         new SimpleDateFormate("yyyy-MM-dd hh:mm:ss").format(new Date())转化     把数据库中数据取出时         要使用to_char(hiredate,'YYYY-MM-DD HH24:MI:SS')变为String类型,         还可以继续利用java.sql.Date.valueOf(String s)         将 JDBC 日期转义形式的字符串转换成 Date 值。  6、取得Oracle数据库时间并存到Java中     从数据库date取得并转为java.util.Date类型     方法一: select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') as current_time from dual 取得字符串     DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");       String dateString = format.parse(map.get("CURRENT_TIME"));解析后取得Date的类型: Sat Jul 03 13:32:46 CST 2010     format.format(dateString);然后再格式化成想要的格式字符串     format.format(dateString);将Date类型转为想要的格式。但是类型为String。在想变回来时在用parse()方法.     方法一: select (sysdate - 8 / 24 - to_date('1970-01-01', 'yyyy-mm-dd')) * 86400000 current_milli from dual 取得java.math.BigDecimal类型         BigDecimal b = (BigDecimal)dateMap.get("CURRENT_MILLI");         Long dateLong = b.longValue();         new Date(dateLong);取得Date对象,可以处理

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ヾMyHeartIsDead 发表于 2013-6-27 10:17
以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助。 new Date(): ...

.。。。。。。。。。。。。。。。。。。。。。。。  就算是复制粘贴,也排下版 好吧:L
回复 使用道具 举报
刘凯 发表于 2013-6-27 10:37
.。。。。。。。。。。。。。。。。。。。。。。。  就算是复制粘贴,也排下版 好吧 ...

凯哥淡定
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马