首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

大家帮小弟我看下这个sql写的对不对

2013-04-20 
大家帮我看下这个sql写的对不对本帖最后由 sunset_ni 于 2013-01-25 11:16:14 编辑select * fromtest wher

大家帮我看下这个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'

热点排行