首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >oracle对时间范围比较的语句

oracle对时间范围比较的语句

作者头像
粲然
发布于 2022-09-28 10:45:17
发布于 2022-09-28 10:45:17
2K0
举报
文章被收录于专栏:工程师的分享工程师的分享

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

代码语言:javascript
复制
if(begintime!=null){
  sql =sql + "and ps.cost_datetime>=to_date('"+ bgDate +" 00:00:00', 'yyyy-mm-dd hh24:mi:ss')";  //ps为一个表的缩写
}
代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档