毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

to_char报错ORA-00907: missing right parenthesis

更新时间:2016-6-1:  来源:毕业论文

在oracle中使用to_char 时发生错误,语句如下 
SELECT * FROM TC_SCHEDLE  t where   TO_CHAR(t.LESSON_TIME, 'YYYYMMDD')>TO_CHAR(2017-05-29 17:22:46,'YYYYMMDD')

后面的to_char不要了,直接写 ‘2017-05-29’,不更好吗?
SELECT * FROM TC_SCHEDLE  t where
  TO_CHAR(t.LESSON_TIME, 'YYYYMMDD')>TO_CHAR('2016-05-29 17:22:46','YYYYMMDD');
--后面要加引号吧.
首先报错估计是因为,你的日期常量没有单引号括起来。
SELECT * FROM TC_SCHEDLE  t where   TO_CHAR(t.LESSON_TIME, 'YYYYMMDD')>TO_CHAR('2017-05-29 17:22:46','YYYYMMDD');
其次,你是字符串比较,

好像记起来了,oracle不能隐式优先把字符串转成日期型。所以写'2017-05-29 17:22:46' 估计不会像SQL Server一样,默认转成日期型。所以,日期常量不能直接写成字符串型,想用日期常量,必须手动to_date,那么,可如下写。'2016-05-29 17:22:46' 作为参数也ok。这种写法逻辑ok,但如果LESSON_TIME字段加索引优化,就不能这么写了。直接日期比较,可以用到TRUNC函数。

SELECT * FROM TC_SCHEDLE  t where   TO_CHAR(t.LESSON_TIME, 'YYYYMMDD')>TO_CHAR(TO_DATE('2017-05-29 17:22:46','yyyy-mm-dd hh24:mi:ss'),'YYYYMMDD');

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。