为什么不使用to_date()?

oolongTea 2007-10-22 10:55:59
公司的开发规范手册上面写着:

SQL 语句规范:不要在SQL语句里面使用to_date函数,应该通过传入date/time类型参数的方法来实现!也就是说在SQL语句里面看到to_date函数是不符合要求的。

这样的话,如果查询两个时间段之间的数据,例如下面这句,应该怎么写查询语句
between to_date( '2007-10-22 20:20:20 ','yyyy-MM-DD hh-mm-ss') and to_date( '2007-10-22 22:22:22','yyyy-MM-DD hh-mm-ss')

还有我不知道为什么不要用to_date(),是效率方面的原因吗?
...全文
365 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
47522341 2007-10-24
  • 打赏
  • 举报
回复
楼上的理解或许是正确的
bobfang 2007-10-23
  • 打赏
  • 举报
回复
sql的where条件中的值使用传参数的方式是一个好习惯,这样的sql效率高。
kinglht 2007-10-23
  • 打赏
  • 举报
回复
to_date应该没什么影响吧?有些东西不加to_date似乎无法处理。
凤影 2007-10-23
  • 打赏
  • 举报
回复
你误解了公司的开发规范了。

公司规范的意思是说在高层语言如java、c#等中调用sql的时候不能在sql中出现to_date,而是通过直接传入date类型来进行查询。

类似

date a,b= ....

PrepareStatment s = 'select * from test where mydatecolumn between ? and ?'

s.set(1) = a;
s.set(2) = b;

而不是使用s = 'select * from test where mydatecolumn between to_date( '2007-10-22 20:20:20 ', 'yyyy-MM-DD hh-mm-ss ') and to_date( '2007-10-22 22:22:22 ', 'yyyy-MM-DD hh-mm-ss ')'

因为这样会出现数据的不一致,比如出现不符合要求的日期:2007-22-22而抛出异常。按照公司规范就不会有问题了。


ps:
在直接使用sql访问数据库的时候肯定要用to_date的。
bjt_ 2007-10-22
  • 打赏
  • 举报
回复
像hibernate等都支持直接日期类型的映射,直接java的日期类型就可以使用,确实不建议使用字符串进行处理,
这种代码在不同的国家可以就无法使用了,而直接使用date类型就没有这种问题
haiye 2007-10-22
  • 打赏
  • 举报
回复
我目前使用的数据库,在sql语句的时候,如果碰到需要日期的地方一定得加to_date()进行转换,不知道为什么,不加的话语句就会出现错误。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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