为什么不使用to_date()?
公司的开发规范手册上面写着:
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(),是效率方面的原因吗?
------解决方案--------------------我目前使用的数据库,在sql语句的时候,如果碰到需要日期的地方一定得加to_date()进行转换,不知道为什么,不加的话语句就会出现错误。
------解决方案--------------------像hibernate等都支持直接日期类型的映射,直接java的日期类型就可以使用,确实不建议使用字符串进行处理,
这种代码在不同的国家可以就无法使用了,而直接使用date类型就没有这种问题
------解决方案--------------------to_date应该没什么影响吧?有些东西不加to_date似乎无法处理。
------解决方案--------------------sql的where条件中的值使用传参数的方式是一个好习惯,这样的sql效率高。
------解决方案--------------------你误解了公司的开发规范了。
公司规范的意思是说在高层语言如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的。
------解决方案--------------------楼上的理解或许是正确的