oracle对时间范围比较的语句

来源:互联网 发布:linux常用命令手册pdf 编辑:程序博客网 时间:2024/05/17 02:54

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