在数据库中搜索出某特定日期之间的记录

realglacier 2002-12-04 02:41:38
对数据库进行操作,其中数据库中的startDate和EndDate是日期/时间型字段
str1和str2是从前端返回的指定日期值,定义为字符型。数据库已经连接正确;
希望完成如下操作:
在数据库中搜索出某特定日期之间的记录
........
select * from table1 where startDate>str1 And EndDate<str2
while(rs.next())
{
rs.getString(1);
.........
}
........


我可以把str1转化为Date格式:
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date myDate1=df.parse(strStart);
java.util.Date myDate2=df.parse(strEnd);
myDate1形式为:Thu Jan 01 00:00:00 CST 1998

日期为Date对象,用before()/after()/equals()进行比较
但我想数据库中的startDate应该是1998-1-1(yyyy-mm-dd)形式,这样应该不能作为比较。

我试了多次,系统还是提示NullPointerException。
请各位指教:应该怎样写这个sql语句。
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fltwt 2002-12-04
  • 打赏
  • 举报
回复
Sql Server可以在日期字段与字符型数据间进行日期计算。和楼上MYSQL的类似。
Oracle最好用to_date进行数据转换后进行日期计算。trunc好像不是标准的
SQL_92的函数。
你的问题不是在JAVA里,而是在DB中。
查阅相关的手册就可以了。
realglacier 2002-12-04
  • 打赏
  • 举报
回复
to floweercat:
exit_date格式为Date吗?

如果exit_date为string格式,则不能比较
realglacier 2002-12-04
  • 打赏
  • 举报
回复
trunc这个函数是oracle中特有的吗
CoolRay 2002-12-04
  • 打赏
  • 举报
回复
if oracle:
Select * FROM your_table WHERE trunc(d_date) BETWEEN to_date('12/01/2002', 'MM/DD/YYYY') AND to_date('12/04/2002', 'MM/DD/YYYY')
flowercat 2002-12-04
  • 打赏
  • 举报
回复
select count(*) from student_info where join_date<='"+exit_date+"' and (exit_date>='"+exit_date+"' or exit_OSPP_date='0000-00-00')
数据库是MySQL,通过。
exit_date的格式是yyyy-mm-dd

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧