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中定义同名的函数,在这个自定义函数中调用各自数据库中提供的函数,完成日期的格式化。
这样在应用程序中就可以用统一的函数调用进行日期的格式化了。
其实,没必要这和麻烦,直接查询出日期类型,然后在应用程序中进行格式化罢。