【问题标题】:Common Date format for DD-MON-YY for Oracle and MySqlOracle 和 MySql 的 DD-MON-YY 通用日期格式
【发布时间】:2016-04-07 11:57:21
【问题描述】:

我有一个业务需求,以前我们只支持 Oracle,现在我们需要将支持扩展到 mariadb(mysql)。

我们无法为 2 个不同的数据库维护 2 个不同的查询。 因此,我们必须形成两个数据库通用的查询。

现在,我们卡在这里,我们知道 mariadb 默认情况下会 YYYY-MM-DD 并且在 STR_TO_DATE 的帮助下,我们可以选择转换为其他格式,但 Oracle 不支持 STR_TO_DATE。

我正在寻找在 Oracle 和 MySql 中都支持 DD-MON-YY 日期格式的通用函数。

如果有人可以帮助我们,那将是很大的帮助。

提前致谢。

【问题讨论】:

  • 如果您使用的是 MySQL 和 Oracle,那么您确实需要考虑支持这两个数据库的不同查询的选项。不同的日期格式只是冰山一角。
  • 创建存储过程/函数以转换为/从通用日期格式转换。 (这两种产品都不太符合 ANSI SQL。)
  • 尽可能使用 ORM 为两个后端生成等效查询,并在 ORM 不支持的情况下使用手写查询。减少

标签: mysql sql oracle


【解决方案1】:

一些想法:

  1. ANSI 日期文字:

    SELECT DATE '1998-12-25' FROM DUAL
    

    它们似乎可以在 MySQL 和 Oracle 中工作(而不是在 SQL Server 中,这可能是未来的问题),它们非常适合例如插入,但生成的日期仍将呈现(可能不同)为字符串,除非您的数据库库支持透明转换为您的客户端语言日期类型。

  2. 默认日期格式:

    两个引擎都有一个。 MySQL 不能改,Oracle 可以。

  3. 用户定义函数:

    如果给定系统没有STR_TO_DATE()DATE_FORMAT(),请编写您自己的。 (同样,如果您需要支持 SQL Server,则需要添加一个前缀,如 dbo.,所以这将是一个问题。)

说,如果您绝对需要在两个不同引擎上运行的 SQL 代码,您很快就会遇到无穷无尽的工作:迟早您将需要用您的客户端语言进行糟糕的复制,几乎所有有趣的事情数据库本来可以提供的功能:自动增量/序列,检查约束,事务......你甚至不能用纯 SQL 编写跨平台分页器,除非你求助于非常复杂的技巧。

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2018-09-04
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多