Oracle数据库迁移碰到的问题

数据库迁移碰到的问题:这段SQL表示搜索日期早于to_date的内容
query=query+ " and {createdate}<=to_date('"+timeend+" 23:59:59','YYYY-MM-DD HH24:mi:ss')";
page.setQueryString(query);
to_date()是Oracle特有的函数,用来转换时间格式,在系统设计的时候,‘timeend’是传递过来的字符串类型的值
现在想要改成不同数据库都支持的话,必须把to_date()给替换掉,同时又不影响整个SQL语句表达的最后结果!
我尝试使用API中的Date类或者其他的类,似乎都不能解决问题,createdate的类型是Date,to_date起到的作用就是把字符串转化为日期。
比如用户选择的日期是2007-8-8,最后转化后还是2007-8-8,所以使用
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd");
d = sdf.parse(bYmd); 等方法是不能成功的。

最后有种解决方法是,另外写个类,写个方法判断数据库的类型,把to_date再封装次,如果是Oracle就不to_date当做字符串传递过去,如果不是则使用对应各种数据库可以转化日期的方法。
比如
String sql=query+ " and {createdate}<=to_date('"+timeend+" 23:59:59','YYYY-MM-DD HH24:mi:ss')";
B.getSql(sql);
如果判断是Oracle,则sql不变,如果不是,则修改to_date为对应数据库的方法。
有种最简单的方法就是把数据库字段类型改了去 :D ,可惜经理可能会不同意。
不知道上面方法的可行性怎么样..还有没有更好的方法。

[list][list=][/list][/list]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值