- 浏览: 837130 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (149)
- ubuntu (27)
- spring (3)
- hibernate (6)
- struts (1)
- jquery (11)
- ext (2)
- ajax (1)
- java (24)
- 设计 (4)
- db (10)
- web (10)
- 软件应用技巧 (6)
- others (2)
- 设计模式 (1)
- subversion (5)
- javascript (2)
- jpa (1)
- windows (6)
- jboss (1)
- junit (2)
- WebSphere (2)
- log4j (2)
- 新闻和感想 (0)
- ldap (3)
- tomcat (6)
- excel (1)
- PDF (1)
- xml (1)
- json (2)
- 正则表达式 (3)
最新评论
-
sunshine_love:
谢啦
svn:ignore 的用处 -
亮0000仔:
非常好。。
JAVA中浮点数的存储 -
u011840397:
你好,备份和还原到指定的目录的参数如何加呢?
svn备份和还原 -
zhglhy:
简单明了,学习了,感谢分享!
Jboss数据源密码加密 -
wmengmeng66:
写的很好,顶
spring中配置proxool数据源
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。他们跟java.util.Date有什么区别, 设计这三个类有什么用意呢?
先看看一个例子:
但是为什么java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取呢? java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD 当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。 可以看出,java.sql.Date,java.sql.Time和java.sql.Timestamp都是为了更好的规范化java.util.Date, 让它能更好的区分日期,时分秒。
一、java.util.Date向java.sql.Date的规范化
如果数据库中存在的非规范化部分的信息将会被劫取。在sun提供的ResultSet.java中这样对getDate进行注释的:
Retrieves the value of the designated column in the current row of this <code>ResultSet</code> object as a “java.sql.Date” object in the Java programming language. 同理。如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的java.sql.Date规范化 ,非规范化的部分将会被劫取。 然而,我们java.sql.Date一般由java.util.Date转换过来,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()). 显然,这样转换过来的java.sql.Date丢失了日期部分. 在http://www.thunderguy.com/semicolon/2003/08/14/java-sql-date-is-not-a-real-date/ 文章中提到,要保存java.util.Date的精确值, 我们需要利用java.sql.Timestamp.
java.sql.Date
stores only date information, not times. Simply
converting a java.util.Date
into a java.sql.Date
will silently set the time to midnight. So, to store
date/times to be manipulated as java.util.Date
objects,
don’t do this:
// BUG: loses time of day preparedStatement.setDate(1, new java.sql.Date(date.getTime())); do this instead: preparedStatement.setTimestamp(1, new java.sql.Timestamp(date.getTime())); java.sql.Timestamp is not a date * * * 二、java.sql.Timestamp到java.util.Date的转化
java.sql.Timestamp extends java.util.Date , but it should not be used as a Date . In JDK 1.3.1, Timestamp.getTime() (inherited from Date ) returns the time to the nearest second only, but JDK 1.4.2 and JDK 1.5 it returns the time to the nearest millisecond as expected. So in JDK 1.3, when reading a timestamp from a ResultSet , don’t do this: // Java 1.3 java.util.Date d = resultSet.getTimestamp(1); long millis = d.getTime(); // BUG: loses fractional seconds in JDK 1.3 To get the full date including milliseconds, you have to do this: java.sql.Timestamp timestamp = resultSet.getTimestamp(1); java.util.Date d = new java.util.Date(timestamp.getTime() + timestamp.getNanos() / 1000000); //nanos是纳秒,1纳秒=百万分之一毫秒
In JDK 1.4.2 and JDK 1.5, you can just do this, depending on what you’re going to do with the Date: // Java 1.4+ java.util.Date d = resultSet.getTimestamp(1); But this might be safer since it avoids any other potential Timestamp problems: // Java 1.4+ java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime()); If your code needs to run on JDK 1.3 and later, you’ll have to do this: java.sql.Timestamp timestamp = resultSet.getTimestamp(1); long millis = (timestamp.getTime() / 1000) * 1000 + timestamp.getNanos() / 1000000; java.util.Date d = new java.util.Date(millis); |
发表评论
-
运算符优先级
2010-11-04 14:28 1864最近在研究表达式求值,看了下论坛推荐的JSEL和Aviator ... -
log4j日志文件保存路径的设置
2010-08-12 11:56 6731一直都是把log4j的日志文件位置设定成绝对路径,直到今天发 ... -
jsp页面突然不支持EL的问题
2010-07-12 16:11 2076转自http://www.iteye.com/topic/15 ... -
jvm监控
2010-07-08 00:49 15837一直没有做过jvm监控, 总以为要找些专门的工具才能做jvm监 ... -
JAVA从键盘读取输入信息
2010-02-28 17:58 2738import java.io.BufferedReader; ... -
JAVA UUID
2010-02-26 23:24 4443UUID(Universally Unique Identif ... -
JAVA中浮点数的运算
2010-02-24 15:30 1670问题的提出: 如果我们编译运行下面这个程序会看到什么 ... -
JAVA中控制double和float的精度
2010-02-24 15:21 7701本篇介绍了在JAVA中如何对double或者float的浮点数 ... -
JAVA的位移运算
2010-02-24 10:38 1105左移操作: x << nx可以是byte, ... -
各种排序JAVA实现
2009-12-15 17:25 1126package sort; import ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2009-08-13 13:13 1711转自:http://jiajun.iteye.com/blog ... -
javabean属性命名难以为人所知的秘密
2009-07-09 10:46 3536原文:http://www.blogjav ... -
java properties文件读取乱码问题解决之道
2009-06-10 11:09 4774Poperties Editor 插件------ ... -
正则表达式参考
2009-05-21 01:40 958http://www.cnblogs.com/netshuai ... -
Apache Commons Logging 是如何决定使用哪个日志实现类的
2009-05-20 11:36 7616原文是:http://www.blogjava.net/Unm ... -
java keytool 常用命令
2009-05-05 17:10 5412最近在做ssl连接active dir ... -
理解Unsupported major.minor version 49.0为何错误
2008-09-09 11:33 2663今天一位同事在发布一个portlet到ibm portal时报 ... -
关于Java异常抛出和处理的思考
2008-07-30 17:38 8001看过不少关于java异常处 ... -
反射私有方法
2008-07-30 10:54 1760曾经碰到一件怪事:Spring可以把构造函数为私有的对象实例也 ... -
jdk5 concurrent 初学
2008-07-22 11:50 2411由于上次发现了ReentrantLock,同步的另外一种实现, ...
相关推荐
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); ``` ##### 2. `java.sql.Date`转换为`java.util.Date` 同样地,将`java.sql.Date`转换为`java.util.Date`也很容易实现。 ```java java.sql.Date...
java.sql.Date、java.sql.Time和java.sql.Timestamp都是java.util.Date的子类(包装类)。但是,java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取。这是因为java.sql.Date只包含年月日信息,时分秒毫秒...
`java.sql.Time` 类仅包含小时、分钟和秒,而 `java.sql.Timestamp` 包含了完整的日期和时间,精度到纳秒,相当于 `java.util.Date` 的扩展。 对于字符串与 `java.sql.Date` 之间的转换,可以使用 `...
`java.sql.Time`仅包含时间信息(小时、分钟和秒),而`Timestamp`则包含日期和时间,精度到纳秒,可以视为`java.util.Date`的增强版,适用于需要高精度的场景。 在数据库操作中,有时需要将字符串转换为`java.sql....
类型转换 ( Java.util.date与java.sql.date区别和转换
本文将深入探讨`java.util.Date`、`java.util.Calendar`、`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`这五种日期时间类之间的区别和联系。 #### 1. `java.util.Date` `java.util.Date`类是Java中表示...
此外,`java.sql`包中还有`java.sql.Time`和`java.sql.Timestamp`类,分别用于表示时间(不包含日期)和日期时间的精确值,它们同样可以从`java.util.Date`通过`getTime()`方法转换得到。 总之,`java.util.Date`...
Java 中的 `java.util.Date` 类和 `java.sql.Date` 类都是用于表示日期和时间的,但是它们有所不同。`java.util.Date` 类有无参的构造函数,而 `java.sql.Date` 类没有无参的构造函数。 可以使用以下方式将 `String...
- `java.util.Date`(Java的日期时间类)可以转换为`java.sql.Date`、`java.sql.Time`或`java.sql.Timestamp`,通过`SimpleDateFormat`进行格式化。 - `java.time.*`(Java 8引入的新日期时间API)的类如`...
首先,使用 SimpleDateFormat 需要将字符串类型的日期数据解析成 java.util.Date 类型,然后使用 java.sql.Timestamp 将其转换成 Timestamp 对象。最后,可以直接将 Timestamp 对象插入到 SQLite 数据库中。 取出 ...
import java.sql.Date; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import ...
DATE 对应的 JDBC 类型是 java.sql.Types.DATE,Java 类型是 java.sql.Date。TIMESTAMP 对应的 JDBC 类型是 java.sql.Types.TIMESTAMP,Java 类型是 java.sql.Timestamp。 4. 二进制类型 RAW 对应的 JDBC 类型是...
Java提供了多种时间类来满足不同的需求,包括`java.util.Date`, `java.sql.Date`, `java.sql.Time`, `java.sql.Timestamp`, `java.text.SimpleDateFormat`, 和 `java.util.Calendar`。下面我们将深入探讨这些类的...
public java.sql.Timestamp getTimestamp(java.sql.Timestamp a); public java.sql.Date getSDate(java.sql.Date a); public java.sql.Time getTime(java.sql.Time a); /*自定义类型*/ public UserBean getUser...
- `DATE` 对应 `java.sql.Types.DATE` 和 `java.sql.Date` - `TIME` 对应 `java.sql.Time` - `TIMESTAMP` 对应 `java.sql.Types.TIMESTAMP` 和 `java.sql.Timestamp` 2. **Oracle 扩展的 Java 类型**: - `RAW`...
在 Java 中,timestamp 对应的数据类型是 java.sql.Timestamp。 varbinary 在 SQL Server 中,varbinary 是一个二进制类型,用于存储变长二进制数据。在 Java 中,varbinary 对应的数据类型是 byte 数组。 ...
在数据库操作中,`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`这三个类是专门为存储和检索SQL数据库中的日期和时间值设计的。`java.sql.Date`仅包含日期,不包含时间信息,`java.sql.Time`则相反,只...
关键在于正确地将`java.util.Date`转换为`java.sql.Date`或`java.sql.Timestamp`,以便能够被`setDate()`和`setTimestamp()`方法所接受。这种方法不仅可以避免类型不匹配的错误,还可以确保数据被准确无误地插入到...
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); System.out.println("转换后的SQL Date为: " + sqlDate); } } ``` 通过调用`java.sql.Date`的构造函数,并传入`java.util.Date`对象的毫秒...