日期:2014-05-16  浏览次数:21005 次

sql查询日期要求通用能跨数据库
mysql 类型是date类型 
Oracle 是date类型
sql:
select * from tb_schedule t where to_char(t.schdate,'yyyy-mm-dd') = '2010-04-13'
在Oracle能执行
可是在mysql里面没有to_char方法 报错

在mysql里写的sql到Oracle又不能执行
有什么通用的方法吗?

日期存的都是 yyyy-mm-dd的格式

------解决方案--------------------
没法统一吧!你可以叫甲骨文修改语法!
------解决方案--------------------
通个毛啊,不同的数据库,日期、时间函数根本不一样!要不:你就按你自己的方法,另写函数去统一!
------解决方案--------------------
怎么统一?
ORACLE语法是:select sysdate from dual where sysdate between to_date('2012-04-22',yyyy-mm-dd) and to_date('2012-04-23',yyyy-mm-dd)
--输入的时间范围需要转换为日期型。

SQL SERVER 语法是:select fdate from tablename where fdate between '2012-04-22' and '2012-04-23'
--不需要转换
--就算需要转换,语法也是:convert(datetime,fdate,120)或者CAST(fdate as datetime)





------解决方案--------------------
创建PrepareStatement 
select * from tb_schedule t where t.schdate = ?
pst.setDate(1,日期型数据)
------解决方案--------------------
可以在MySQL和Oracle中定义同名的函数,在这个自定义函数中调用各自数据库中提供的函数,完成日期的格式化。

这样在应用程序中就可以用统一的函数调用进行日期的格式化了。

其实,没必要这和麻烦,直接查询出日期类型,然后在应用程序中进行格式化罢。