时间在数据库存储的方式有很多种,但主要以date为主,下面以oracle为例
一般在数据库语句中直接写某个时间条件例如:c_datetime<= ‘2014-08-06’或者between time1 and time2是会出错
比较经典的错误为ORA-01861: literal does not match format string
即文字与格式字符串不匹配
此时需要多字符串的时间进行转换:
to_date('time1' , 'yyyy-mm-dd hh24:mi:ss')
在具体的时间范围语句的拼接上,一般逻辑为若用户设置了开始时间\结束时间则在查询语句中拼接开始时间\结束时间的逻辑限制
sql为一个查询语句
if(begintime!=null){
sql =sql + "and ps.cost_datetime>=to_date('"+ bgDate +" 00:00:00', 'yyyy-mm-dd hh24:mi:ss')"; //ps为一个表的缩写
}
if(endtime!=null){
sql = sql + "and ps.cost_datetime<=to_date('"+ edDate +" 23:59:59', 'yyyy-mm-dd hh24:mi:ss')"; //ps为一个表的缩写
}
这里需要看到,一般时间范围都包括当天,所以开始时间以00:00:00开始,结束时间以23:59:59结束
这样就可以对时间范围比较进行查询
一般查询还需要分页显示,分页显示一般会查询两次,一次为查询符合条件的条数,一次为具体的每一条记录
如果加入了时间限制,则要在查询条数的语句中也要添加进来时间约束
具体分页语句请参考之前的文章
具体时间日期范围查询可参考http://www.2cto.com/database/201205/132096.html