我要以时间为条件进行查询,时间是long 型。其中PTime 是数据库表中的一个列。他的类型是datetime型的,tt, 和ft是long型的。
他们是把字符串型的日期转换成long型。代码片断如下:Sting fTime="2006-03-05 00:00:22.000";//开始时间
Sting tTime="2006-03-06 00:00:22.000";//结束时间
java.util.Date ftm=sdf.parse(fTime);
ft=ftm.getTime();
java.util.Date ttm=sdf.parse(tTime);
tt=ttm.getTime();
String query="SELECT * "+
"FROM "+atabName+
" WHERE PTime < "+tt+
" and PTime > "+ ft;
String query="SELECT * "+
"FROM "+atabName+
" WHERE PTime < "+ttm+
" and PTime > "+ ftm;
不就行了吗?
ft=(long)ftm.getTime();
java.util.Date ttm=sdf.parse(tTime);
tt=(long)ttm.getTime();
象上面,ftm.getTime() 他的结果就是long型的,不用转换。
因为要进行比较,是long型才能和datetime比较。
但是还是产生了错误:
“将 expression 转换为数据类型 datetime 时发生算术溢出错误 ”
以mssql自带的Northwind库中Orders表为例,我测试通过的
String start="1996-07-04";
String end="1996-07-08";
ResultSet rs=st.executeQuery("select * from Orders where orderdate between '"+start+"'and '"+end+"'");
while(rs.next()){
System.out.println(rs.getString(1));
}注意sql语句的间隔
Sting fTime="2006-03-05 00:00:22.000";//开始时间
Sting tTime="2006-03-06 00:00:22.000";//结束时间
String query="SELECT * "+"FROM "+atabName+" WHERE PTime < "+fTime+" and PTime > "+ tTime;
相反 如果数据库中的PTime是long型的话 楼主的程序就符合要求了