发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

一个使用JDBC按Date查询查询的问题

2004-07-17 15:24
赞助商链接

在表中有如下数据
...| created_date |................
2004-7-16 15:05:22
2004-7-16 15:06:19
2004-7-16 15:08:20
.........
这些数据都是用JDBC 的setDate()插入的

执行如下SQL
String strQuery =
"SELECT * FROM t_wf_process_instance WHERE created_date > ? ";

ps = con.prepareStatement(strQuery);
java.util.Date a=new java.util.Date(2001,1,1,1,1,1);

ps.setDate(1 , new java.sql.Date(a.getTime()));

result = ps.executeQuery();
没有记录,
如果将sql改为
"SELECT * FROM t_wf_process_instance WHERE created_date < ? "
可以查出上述记录,

这是为什么,
我用"SELECT * FROM t_wf_process_instance WHERE created_date between ? AND ?"
可以么,好像也有上述问题,

有什么好的按时间范围查询的方法么
(以上测试使用Oracle8)





2004-07-17 23:58

因为java.sql.Date只能精确到某一天,所以使用setDate()方法插入的数据应该不会含有时分秒的信息的.应该使用java.sql.Timestamp和对应的setTimestamp()方法.

关于你说的查询的问题,问题在于创建的Date对象并不是所希望的2001-01-01 01:01:01,而是3901-02-01 01:01:01.
世纪的年份是"给定的年" + 1900,而月份是从0开始的.

对于年份的计算,推荐使用java.util.Calendar

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com