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

首先,看一下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”这样的形式,这就需要我们将获取的时间格式做一下中间转换,否则语句将不能正常执行,当然,我们同样可以通过数据库函数来进行处理,但相对比较复杂一些。

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

时间: 2024-09-20 06:18:28

sqlserver和oracle中对datetime进行条件查询的一点区别小结_数据库其它的相关文章

SQLServer 2005 和Oracle 语法的一点差异小结_数据库其它

1.获取系统当前时间 SQL Server 2005: select getdate() Oracle: select sysdate from dual 2.获取年月日 SQL Server 2005: 复制代码 代码如下: select year(getdate()) --2011 select month(getdate()) --3 select day(getdate()) --23 Oracle: 复制代码 代码如下: select to_char(sysdate,'yyyy') f

URL中斜杠/和反斜杠\的区别小结_其它综合

最近在项目中遇到了一个小问题,纠结了半天. 路径中使用斜杠/和反斜杠\的区别到底是什么.查阅了一些资料后可知. Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符. Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不混淆,所以采用 反斜杠\ 作为路径分隔符.所以目前windows系统上的文件浏览器都是用 反斜杠\ 作为路径分隔符.随着发展,DOS系统已经被淘汰了,命令提示符也用的很少,斜杆和反斜杠在大

在Mysql,SqlServer及Oracle中设置主键自动增长

1.把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id int auto_increment primary key not null, name varchar(15)); insert into customers(name) values("name1"),("name2"); select id from customers;

hql语句-hql带多个条件查询报null错误,但是数据库能查到值

问题描述 hql带多个条件查询报null错误,但是数据库能查到值 String hql = "from Userinfo u where u.userName=? and u.userPassword=? and u.sysrole.roleCode='1101'"; Query query = this.getSession().createQuery(hql); query.setParameter(0, userName); query.setParameter(1, userP

ORACLE中nvarchar2和varchar2两种数据类型的区别

Oracle中nvarchar2和varchar2的区别: 1.NVARCHAR2中存储中文字时,一个中文字当一个字符来处理 NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符. 2.而VARCHAR2中一个中文字当两个字符来处理 VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个 Oracle中nvarchar2和varchar2的共同点: 不定长存储,当存储信息长度小于指定的长度,那么就已实际存入的长度为准这一点不像varchar这种定长存

Oracle中利用数据泵导出查询结果(二) 外部表的卸载功能

还是上一篇中的测试环境: SQL> CREATE TABLE T1 2  (ID NUMBER, NAME VARCHAR2(30)); Table created. SQL> INSERT INTO T1 2  SELECT ROWNUM, TNAME 3  FROM TAB; 66 rows created. SQL> CREATE TABLE T2 2  (ID NUMBER, NAME VARCHAR2(30)); Table created. SQL> INSERT IN

Oracle中利用数据泵导出查询结果(一) 数据泵的QUERY功能

在ITPUB上看到有人提出这个问题,能否利用数据泵导出一个查询结果.事实上数据泵还真的具有这个功能. 建立一个简单的测试环境: SQL> CREATE TABLE T1 2  (ID NUMBER, NAME VARCHAR2(30)); Table created. SQL> INSERT INTO T1 2  SELECT ROWNUM, TNAME 3  FROM TAB; 66 rows created. SQL> CREATE TABLE T2 2  (ID NUMBER, N

MySQL中case when 语句条件查询的方法

case 计算条件列表并返回多个可能结果表达式之一. case 具有两种格式: 简单 case 函数将某个表达式与一组简单表达式进行比较以确定结果. case 搜索函数计算一组布尔表达式以确定结果. 两种格式都支持可选的 else 参数. 语法 简单 case 函数: case input_expression     when when_expression then result_expression         [ ...n ]     [         else else_resu

oracle中not exists对外层查询的影响

又一个类似『12c比10g索引回表消耗增多的问题』的案例,同事在12c中跑的buffer get很高,但是在10g中跑的buffer很低.怀疑是不是12c的优化器有问题. 这个10g的环境和12c的环境,数据量大致一样,只是有很少部分的不同,但是就是这个很少部分不同,造成了not exists中的子查询返回不同的值,进而对外层查询产生不同的影响. 我们来用如下的代码模拟一下. 初始化数据: --10g drop table t1; drop table t2;   create table t1