我要以时间为条件进行查询,时间是long 型。其中PTime 是数据库表中的一个列。他的类型是datetime型的,tt, 和ft是long型的。
他们是把字符串型的日期转换成long型。
但是出现了一下错误:
“将 expression 转换为数据类型 datetime 时发生算术溢出错误 ”
代码片断如下: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.   

    要按照楼主的意思改的话,要把数据库中的时间字段的类型改为Long类型对应的数据类型(我的mysql用的是BIGINT)
      

  2.   

    楼主的sql语句中的tt,pt是long型的,而数据库中的是datetime,明显类型不兼容嘛
      

  3.   

    直接把它当字符串就行了啊,String query="SELECT * "+
     "FROM "+atabName+
     " WHERE PTime < '"+tTime+
     "' and PTime > '"+ fTime + "'";我的测试如下,建了一个表submit:
    mysql> desc submit;
    +------------+------------------+------+-----+---------------------+----------------+
    | Field      | Type             | Null | Key | Default             | Extra
    +------------+------------------+------+-----+---------------------+----------------
    | id         | int(10) unsigned | NO   | PRI |                     | auto_increment |
    | submitTime | datetime         | NO   |     | 0000-00-00 00:00:00 |                
    +------------+------------------+------+-----+---------------------+----------------
    2 rows in set (0.01 sec)
    mysql> select * from submit;
    +----+---------------------+
    | id | submitTime          |
    +----+---------------------+
    | 1  | 2005-10-21 10:21:21 |
    | 2  | 2005-12-19 11:01:25 |
    +----+---------------------+
    2 rows in set (0.00 sec)mysql> select * from submit where submitTime >='2005-05-05 10:20:39' and submitT
    ime <'2006-05-06 12:01:29';
    +----+---------------------+
    | id | submitTime          |
    +----+---------------------+
    | 1  | 2005-10-21 10:21:21 |
    | 2  | 2005-12-19 11:01:25 |
    +----+---------------------+
    2 rows in set (0.00 sec)mysql>
      

  4.   

    数据库中的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;
      

  5.   

    相反 如果数据库中的PTime是long型的话 楼主的程序就符合要求了
      

  6.   

    使用数据库自身的函数,在查询语句里转换fTime和pTime的类型,使之与java类型匹配不行吗?