还是oracle文字与格式字符串不匹配.select to_date(TOP_START_DATE,'yyyy-mm-dd') from COLUMN__CONTENTS

ORA-01861: 文字与格式字符串不匹配 .我这边赋值用的 cc.topStartDate = new Date();
.为啥得到数据库字段值还是07-6月 -12 09.50.24.906000000 上午呢?这个字段值是啥格式?

两个date类型是可以直接相减的 你试试 结果是天数追问

直接相减我这样啊select * from COLUMN__CONTENTS where To_date(sysdate, 'yyyy-mm-dd ') - To_date( TOP_START_DATE, 'yyyy-mm-dd ')>7 ..结果还是报ORA-01861: 文字与格式字符串不匹配啊 select * from COLUMN__CONTENTS where sysdate - TOP_START_DATE>7 这样直接减就报ORA-00932: 数据类型不一致: 应为 INTERVAL DAY TO SECOND, 但却获得 NUMBER

追答

TOP_START_DATE 这个在oracle中是DATE 类型是吧

追问

我在java里赋值用的是 cc.topStartDate = new Date(); .在数据库中字段属性是TIMESTAMP(6).字段值是07-6月 -12 09.50.24.906000000 上午 有一个

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-07
你电脑上的日期格式是什麽样的?
控制面板里---地区与语言里-格式更改下追问

select to_char(TOP_START_DATE , 'yyyy-mm-dd ') from COLUMN__CONTENTS 这样可以检索出数据来.不过我用这个select * from COLUMN__CONTENTS where To_char(To_date(sysdate, 'yyyy-mm-dd ') - To_date( TOP_START_DATE, 'yyyy-mm-dd '))>7 检索..又报ORA-01861: 文字与格式字符串不匹配了..额..这个

追答

不能用TO_char ,你转换成字符串了如何比较 用下面的方法看是否有数据
select * from COLUMN__CONTENTS where To_date(sysdate, 'yyyy-mm-dd ') - To_date( TOP_START_DATE, 'yyyy-mm-dd ')>7

追问

不行select * from COLUMN__CONTENTS where To_date(sysdate, 'yyyy-mm-dd ') - To_date( TOP_START_DATE, 'yyyy-mm-dd ')>7 报出来的还是ORA-01861: 文字与格式字符串不匹配..为啥select to_char(TOP_START_DATE , 'yyyy-mm-dd ') from COLUMN__CONTENTS 这样就可以检索出来呢?

追答

看来问题就在这里To_date(sysdate, 'yyyy-mm-dd ')
你 select To_date(sysdate, 'yyyy-mm-dd ') 得到的是什麽结果?
这样那:
select * from COLUMN__CONTENTS where To_char(sysdate, 'yyyy-mm-dd ') - To_char( TOP_START_DATE, 'yyyy-mm-dd ')>7

参考资料:http://wenku.baidu.com/view/03134c8083d049649b66580d.html

追问

select To_date(SysDate, 'yyyy-mm-dd ') 我这样输入 ORA-00923: 未找到要求的 FROM 关键字..我在格式里看了看.好像也没问题啊. 2012年6月7日 2012-6-7 11:07:10 时间格式就是H:mm:ss 日期的短日期格式yyyy-M-d 长日期格式yyyy'年'M'月'd'日' .应该是正常的啊

来自:求助得到的回答
第1个回答  2012-06-07
select * from COLUMN__CONTENTS where To_char(To_date(sysdate, 'yyyy-mm-dd ') - To_date( TOP_START_DATE, 'yyyy-mm-dd '))>7 你觉得这样写有问题么。
起码
select * from COLUMN__CONTENTS where To_char(sysdate, 'yyyy-mm-dd ') - To_char( to_date(TOP_START_DATE, 'yyyy-mm-dd '))>7追问

select * from COLUMN__CONTENTS where To_char(sysdate, 'yyyy-mm-dd ') - To_char( to_date(TOP_START_DATE, 'yyyy-mm-dd '))>7
这样我开始试过了.报.ORA-01722: 无效数字

追答

你试试将yyyy-mm-dd 换成 yyyyMMdd .这样 to_char(sysdate ,'yyyyMMdd') 就好使了
select * from COLUMN__CONTENTS where To_char(sysdate, 'yyyyMMdd ') - To_char( TOP_START_DATE, 'yyyyMMdd ')>7

本回答被提问者采纳