oracle对时间范围比较的语句

时间在数据库存储的方式有很多种,但主要以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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值