当前位置: 首页 > 图文教程 > 数据库 > 数据库技巧 > sqlserver和oracle中对datetime进行条件查询的一点区别小结

数据库技巧
数据库设计经验谈
数据库设计的折衷方法
Access与sql server的语法区别总结
收藏的SQLServer技巧集
多种获取远程连接access数据库的方法
SQL中NTEXT字段内容显示<long text>的原因
SQL Prompt--绝好的SQL语法提示工具
海量数据库的查询优化及分页算法方案 2 之 改良SQL语句
海量数据库的查询优化及分页算法方案集合1/2
海量数据库的查询优化及分页算法方案集合2/2
取随机记录的语句
问个高难度的复杂查询(在一个时间段内的间隔查询)
Sql语句求最小可用id
Sql Server 和 Access 操作数据库结构Sql语句小结
ACCESS转化成SQL2000需要注意的几个问题小结
SQL Server数据库性能优化技术
数据库正规化和设计技巧
如何让你的SQL运行得更快
Select data from an Excel sheet in MSSQL
一个多表查询的SQL语句

数据库技巧 中的 sqlserver和oracle中对datetime进行条件查询的一点区别小结


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 122 ::
收藏到网摘: n/a

系统中涉及公文列表的部分,需要支持对时间列的搜索功能,但必须要同时支持sqlserver和oracle两种数据库,而这在这两种数据库中编写查询语句的时候有一些不大一样的地方,无法实现一条语句实现两个数据库的正常查询,所以需要做一些调整。 首先,看一下sql server,之前我们都通过前台用户选择一个起始时间和一个结束时间(以日为最小单位),然后来作为条件进行查询,如果直接通过”between starttime and endtime”来作为条件的话,发现会自动将”2009-06-17”转化为” 2009-06-17 00:00:00”,于是如下查询条件” between ‘2009-06-16' and ‘2009-06-17'”,只能得到16日的数据,17日的数据不能得到,如果想连17日的数据也查到的话,我们可以对用户选择时间进行一下处理:可以为其添加详细的时间条件,如” between ‘2009-06-16 00:00:00' and ‘2009-06-17 23:59:59'”;或者干脆去巧地将结束时间替换为下一天的日期也可,但是这样需要我们对递增日期做一下特殊处理,因为我们可能遇到选择当月最后一日的情况,详细的处理这里就不赘述了。

下面谈谈oracle数据库中的处理,同样是上面两种方式,但是如果采取精确时间的方式的话,我们需要通过oracle的数据库时间函数进行处理,相对比较繁琐,如果直接通过递增结束日期的方式或许更便捷一些,当然,只能适应所选日期最小单位为“日”的情况。还有一点需要说明的是,oracle中采取的日期字符串格式和sql server是不一样的,一般为”5-6月-09”这样的形式,这就需要我们将获取的时间格式做一下中间转换,否则语句将不能正常执行,当然,我们同样可以通过数据库函数来进行处理,但相对比较复杂一些。

其实,有的时候,对很多问题来说,我们可以采取比较正规的方法来处理,但是,如果在需求限定的范围内有一些虽然有所局限,但可以完全满足需求的实现方法,我觉得还是可以大胆地区用的,因为我们编程的终极目的终究是:用最简单的方式达到目的,凡事不能太过死板,这个过程其实也是提高我们对项目需求的理解,最后,就是需要注意我们抄小路必须要回避的一些问题,千万不能太过大意哦。