遇到一个比较BH的存日期的,存成varchar2:2007,11,20 ,我要取出小于当前日期的(字段名:time1 ),sql如下:
select to_date(substr(time1,1,4)||'-'||substr(time1,6,2)||'-'||substr(time1,9,2),'yyyy-mm-dd') as name1
from table
where to_date(substr(time1,1,4)||'-'||substr(time1,6,2)||'-'||substr(time1,9,2),'yyyy-mm-dd')<sysdate只执行where前的部分,可以正常执行(执行结果:2007-11-20),但是执行整个句子,报错:
在要求输入数字处找到非数字字符? 请教一下,谢谢:)
select to_date(substr(time1,1,4)||'-'||substr(time1,6,2)||'-'||substr(time1,9,2),'yyyy-mm-dd') as name1
from table
where to_date(substr(time1,1,4)||'-'||substr(time1,6,2)||'-'||substr(time1,9,2),'yyyy-mm-dd')<sysdate只执行where前的部分,可以正常执行(执行结果:2007-11-20),但是执行整个句子,报错:
在要求输入数字处找到非数字字符? 请教一下,谢谢:)
解决方案 »
- oracle 11g R2 ORA-12154:TNS:无法解析指定的连接标识符
- oracle单行子查询返回多行
- init.ora 文件的说明
- OCI程序向oracle表中插入数据导致引起表的锁,从而程序停止执行的问题(高分求)
- formbuilder中HOST命令的问题
- 各位大侠!!!!!! 谁有TOAD for DB2 的注册码?
- oracle存储过程问题
- 关于Oracle 10g的许可“Oracle Certification Matrices”,谁给详细解说一下?
- 新手:刚建的数据库,登录提示出错。(在线等待)
- oracle 带有括号的字段怎么查?
- 日期输入问题?
- 如何实现对一个用户下表的遍历循环复制?我按照书上的内容写的代码无法执行。
select to_date(substr(to_char(time1,'yyyy-mm-dd'),1,4) ¦ ¦ '- ' ¦ ¦substr(to_char(time1,'yyyy-mm-dd'),6,2) ¦ ¦ '- ' ¦ ¦substr(to_char(time1,'yyyy-mm-dd'),9,2), 'yyyy-mm-dd') as name1
from table
where to_date(substr(to_char(time1,'yyyy-mm-dd'),1,4) ¦ ¦ '- ' ¦ ¦substr(to_char(time1,'yyyy-mm-dd'),6,2) ¦ ¦ '- ' ¦ ¦substr(to_char(time1,'yyyy-mm-dd'),9,2), 'yyyy-mm-dd') < sysdate
在后面加了一句: and substr(time1,1,4)>'2000' 虽然问题解决,但是没有想通,请大家赐教,可以加分,谢谢:)
有人告诉我是nls_dateFormat的关系,但是不是很懂,是这个原因么?
where to_date(substr(time,1,4)||substr(time,6,2)||substr(time,9,2),'yyyy-mm-dd')<sysdate;
2007,11,20经过如上转换之后就默认为'2007-11-20 00:00:00'当然也要看你当前系统采用什么样的时间格式.
select * from time_list;
TIME1
----------
2007,01,01
2007,02,02
2007,03,03
2007,04,04
2007,11,11
2007,12,12alter session set nls_date_format = 'yyyy-mm-dd'select to_date(time1,'yyyy-mm-dd') from time_list where to_date(time1,'yyyy-mm-dd')<sysdate;TO_DATE(TI
----------
2007-01-01
2007-02-02
2007-03-03
2007-04-04
2007-11-11
from table_name
where to_date(time1, 'yyyy,mm,hh') < sysdate但无论用你的substr方法,还是楼上的方法,都要保证输入的日期字符串格式一致。