大家帮我看下这个sql写的对不对
本帖最后由 sunset_ni 于 2013-01-25 11:16:14 编辑
select * from test where 1=1 and
to_date(to_char(create_time,'yyyy/mm/dd'),‘yyyy/mm/dd’) >= to_date( '2013/1/25','yyyy/mm/dd')
帮忙看对不对,不对要怎么修改。。。。
create_time 是varchar2类型。。。
------解决方案--------------------直接写成
select * from test where to_date(create_time,'YYYY-MM-DD')>=to_date('2013/1/23','YYYY-MM-DD')
------解决方案--------------------to_char(create_time,'yyyy/mm/dd')是日期型转为字符型。你既然已经是字符型了,直接转换日期型就是了
to_date(create_time,'yyyy/mm/dd')
------解决方案--------------------select *
from test
where 1=1
and
to_date(create_time,‘yyyy/mm/dd’) >= to_date( '2013/1/25','yyyy/mm/dd')
你说create_time已经是varchar2类型。。。是说create_time已经是yyyy/mm/dd格式么?
------解决方案--------------------让人蛋疼的日期啊。。。。
首先的create_time可能存null吗?可能存2012/02/31这样的日期吗?
想表达的意思其实就是你的日期不合理时你的需求应该怎样处理?
所以说你的这SQL是有问题,一般在处理日期时你写一个日期处理函数就可以排除那些错误造成SQL语句出错的影响。
按照你写的SQL,直接可以写成这样(在不考虑null值以及错误数据的情况下)。
select * from test where create_time >= '2013/1/25'