【发布时间】:2019-10-11 20:35:17
【问题描述】:
我正在使用在 DB2 中运行良好的日期函数。但是现在当我们切换到 Oracle 时,它失败了,因为 Oracle 中没有日期功能。现在我必须更改代码以支持这两个数据库。
这两个数据库中是否有日期函数支持?
coalesce(date(V_ORG_ID_EXPR_DT_FIELD), '12/31/9999')
【问题讨论】:
-
DATE 是 Oracle 中的一种数据类型。我想你会发现定义一个名为“DATE”的函数(或函数族)返回一个日期(数据类型)将非常困难,如果不是不可能的话。您最好定义一组用户定义的函数,它们在两个数据库中执行相同的功能,考虑到每个数据库在表示日期和时间方面的差异。
-
DB2 中的
DATE是严格意义上的日历日期(例如,YYYY-MM-DD)。 Oracle 中的DATE是日历日期加上时间(例如,YYYY-MM-DD hh:mm:ss)。您是否在查询中考虑了这一点(例如,only use an exclusive upper-bound)?另请注意,MM/DD/YYYY不是可移植格式,使用 ISO 格式 (YYYY-MM-DD) 会更好。你为什么要在两个数据库上运行完全相同的语句?还有许多其他差异,因此这不是唯一的问题。