我要以时间为条件进行查询,时间是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;

解决方案 »

  1.   

    直接写成
    String query="SELECT * "+
     "FROM "+atabName+
     " WHERE PTime < "+ttm+
     " and PTime > "+ ftm;
    不就行了吗?
      

  2.   

    不解你什么意思, 为什么你要转化为long型, 你的问题是什么?
      

  3.   

    java.util.Date ftm=sdf.parse(fTime);
    ft=(long)ftm.getTime();
    java.util.Date ttm=sdf.parse(tTime);
    tt=(long)ttm.getTime();
      

  4.   

    不能直接以字符串形式转化为datetime型,这样会产生语法错误。
    象上面,ftm.getTime() 他的结果就是long型的,不用转换。
    因为要进行比较,是long型才能和datetime比较。
    但是还是产生了错误:
    “将 expression 转换为数据类型 datetime 时发生算术溢出错误 ”
      

  5.   

    直接用字符串类型就好
    以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语句的间隔
      

  6.   

    数据库中的PTime是datetime ,那么就更好办了啊
    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型的话 楼主的程序就符合要求了