用PL/SQL Developer查询某个时间段的数据
WHERE tDate >= to_date('2011-02-01', 'yyyy-MM-dd') AND tDate <= to_date('2011-02-28', 'yyyy-MM-dd')
和用 WHERE tDate >= to_date('2011-02-01', 'yyyy-MM-dd') AND tDate < to_date('2011-03-01', 'yyyy-MM-dd')
是要查询2月份数据,可查询出来不一样,第一个查不出2-28那天数据,为什么日期不能“等于”呢?原因是什么?还是就这么规定的?
WHERE tDate >= to_date('2011-02-01', 'yyyy-MM-dd') AND tDate <= to_date('2011-02-28', 'yyyy-MM-dd')
和用 WHERE tDate >= to_date('2011-02-01', 'yyyy-MM-dd') AND tDate < to_date('2011-03-01', 'yyyy-MM-dd')
是要查询2月份数据,可查询出来不一样,第一个查不出2-28那天数据,为什么日期不能“等于”呢?原因是什么?还是就这么规定的?
解决方案 »
- oracle 9i 数据循环验证
- ORA-03113:通信通道的文件结束
- oracle 如何 生成 导入csv数据格式 到 表中的 控制文件?
- 急!急!急!简述oracle面向对象特性
- date字段显示短日期(yyyy-MM-dd)格式
- ORA-00214错误,Oracle起不来
- oracle单表数据丢失问题
- 新手提问,关于查询已经创建好的VIEW里面全部字段的问题。(多表的UNION起来的情况很棘手,请有经验的朋友来看一下)
- oracle 9i能安装在windows 2003上面吗?
- Oracle中可以进行位运算吗?
- 关于ORACLE数据库如何实现备份,最主要的是热备份
- 关于oracle锁表的问题
有可能
除非你 tDate字段格式不是'yyyy-mm-dd' 而是还有小时分钟秒 所以才不满足
to_date('2011-02-28', 'yyyy-MM-dd') 得值是小时分钟秒都是0
即:2011-02-28 00:00:00
因此你的数据肯定不等于2011-02-28 00:00:00
tDate <= to_date('2011-02-28', 'yyyy-MM-dd')
实际数据是2011-02-28 13:34:34这样的格式 你用等号当然没数据了
--我插入到数据库的时间是 2011-03-01 12:22:22
-- 如果用hiredate=to_date('2011-03-01','yyyy-mm-dd'); 肯定是不符合条件的
--因为2011-03-01 12:22:22 与2011-03-01并不相等 1 insert into emp (empno,ename,hiredate)
2 values
3* (8888,'aspen',to_date('2011-03-01 12:22:22','yyyy-mm-dd hh24:mi:ss'))
scott@YPCOST> /1 row created.scott@YPCOST> commit;Commit complete.scott@YPCOST> select * from emp where hiredate=to_date('2011-03-01','yyyy-mm-dd');no rows selectedscott@YPCOST> select * from emp where hiredate>to_date('2011-03-01','yyyy-mm-dd'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
8888 aspen 2011-03-01
FROM TEST_TAB
WHERE TDATE >= TO_DATE('2011-02-01', 'yyyy-MM-dd')
AND TDATE <= TO_DATE('2011-02-28 23:59:59', 'yyyy-MM-dd HH24:MI:SS');SQL> SELECT to_char(TO_DATE('2011-02-28', 'yyyy-MM-dd'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL;
TO_CHAR(TO_DATE('2011-02-28','
------------------------------
2011-02-28 00:00:00
日期比较也可以用等于的,但是因为TO_DATE('2011-02-28', 'yyyy-MM-dd')其实是28号凌晨0点,所以不会包含28号的时间段的。修改成上面的就可以了。