oracle to_date陷阱
ORACLE to_date 陷阱
oracle 中不带时分秒的字符串 to_date 转换时间后与带时分秒的date型字段做带等值的比较 (>=,<=,=)时,由于字符串不带时分秒,所以转换后时分秒默认为00:00:00,oracle中比较date是以一个时间点来比较的,精确到秒甚至毫秒微秒纳秒,所以date字段的时分秒不为00:00:00的就与不带时分秒字符串转换后的date匹配不上。示例:
表中huhai_seq_value所有数据
MYDATE
-----------
2009-03-02
2009-03-02
2009-03-02
2009-03-03
2009-03-03
2009-03-03
--sql1:
select hsv.mydate from huhai_seq_value hsv
where hsv.mydate = to_date('2009-03-03','yyyy-mm-dd ');
sql1查询结果:
MYDATE
-----------
2009-03-03
2009-03-03
--sql2:
select hsv.mydate from huhai_seq_value hsv
where to_char(hsv.mydate,'yyyy-mm-dd') = '2009-03-03';
sql查询结果:
MYDATE
-----------
2009-03-03
2009-03-03
2009-03-03
结论:所以在做不带时分秒的日期比较时最好用to_char函数转换后与字符串比较。
相关文档:
一,简单介绍
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按
序列号排序的地方。
1、 create sequence
你首先要有create sequence或者create any sequence权限,
create sequence emp_sequence
&n ......
--------------------显式游标
--查询数据
select * from employees;
--定义部分
declare
--声明游标
cursor mycur is select * from employees where employee_id<120;
--定义一个集合变量用� ......
回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.经常看到开发人员误把表删除,急急忙忙找DBA来想办法的情况,相信,随着10G ......
exp/imp是Oracle自带的导入导出命令,运用它,即使不需要那结UI工具也能轻易的完成数据导出导入工作,下面是它们的参数:
EXP参数详解
使用的格式是:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
其中USERID是必须的且为第一个参数
关键字
备注
USERID
用户名/口令
FULL
导出整个文件 (N)
BUFFER ......
查询:
select distinct(empno) , name , age from t_person t where (t.age between 21 and 25 or name like '%王%') and
empno like '32%';
更新:
update t_person set name = 'ww' where empno = '321654';
update t_person set(empno,name,age) = (select empno,name,age f ......