oracle 查询

0 1看天下 2013-04-22 03:54:00
to_char(to_date(finishdate,'yyyy-MM-dd'),'yyyy-MM-dd')<= '2013-04-22'
类似上面这样当finishdate中有'2012-3-21'这种格式时就没法转 谁能告诉我怎么整
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
0 1看天下 2013-04-23
  • 打赏
  • 举报
回复
没有 当初建表的时候用的char这一列中 有空的 有2013-8-1 还有2013-12-30这种得 所以在查这一列跟其他日期比较的时候才会有问题 我现在已经控制保存的时候按yyyy-MM-dd来了 我只是想问一下 原先的数据怎么能转成yyyy-MM-dd 的格式来比较呢 上边俩位的方法试过了 不行的 你们可以还原一下表试一下 是跟字段类型有关系吧
EnForGrass 2013-04-22
  • 打赏
  • 举报
回复
to_date(nvl(finishdate,'默认值'),'yyyy-MM-dd'))<= to_date('2013-04-22','yyyy-MM-dd')
叫我三三 2013-04-22
  • 打赏
  • 举报
回复
引用 4 楼 flashyyp123 的回复:
我知道单个日期的转换比较时可以,但是当换成表中字段 而且这个字段 有空的 有类似‘2012-3-21’的数据时就有问题
你表中存日期的不是datetime类型? to_date(isnull(finishdate,'为空的值,或直接用null'),'yyyy/mm/dd'))<= to_date('2013-04-22','yyyy/mm/dd')
0 1看天下 2013-04-22
  • 打赏
  • 举报
回复
引用 3 楼 kansousama 的回复:
oracle时间比较,不要用字符串呀 select * from table where finishdate <= to_date('2013-04-22','yyyy/mm/dd')
注意表中有的数据不转换是没法比较的 如'2012-3-21'与'2013-04-22'就是没法比较的
0 1看天下 2013-04-22
  • 打赏
  • 举报
回复
我知道单个日期的转换比较时可以,但是当换成表中字段 而且这个字段 有空的 有类似‘2012-3-21’的数据时就有问题
叫我三三 2013-04-22
  • 打赏
  • 举报
回复
oracle时间比较,不要用字符串呀 select * from table where finishdate <= to_date('2013-04-22','yyyy/mm/dd')
  • 打赏
  • 举报
回复
SQL> select to_char(to_date('2013-3-21','yyyy-MM-dd'),'yyyy-MM-dd') from dual;

TO_CHAR(TO_DATE('2013-3-21','Y
------------------------------
2013-03-21
没问题,亲
ysjydss 2013-04-22
  • 打赏
  • 举报
回复
测试了一下,没问题啊 当 字符型 finishdate=‘2013-3-21’ 时,to_date(finishdate,'yyyy-MM-dd')=2013-03-21 00:00:00 然后再to_char 就变成2012-03-21了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧