【问题标题】:How to write the MySQL DATE_ADD() in "generic" SQL如何在“通用”SQL 中编写 MySQL DATE_ADD()
【发布时间】:2010-07-11 17:04:51
【问题描述】:

我正在使用“标准”/“通用”SQL 编写查询,以便它可以在任何数据库(MySQL、Postgre 等)上运行。

我想使用 MySQL 的DATE_ADD()。在 Postgre 中,它会使用 '2001-01-01'::timestamp + '1 year'::interval; 之类的东西来完成。

是否有更“通用”的编写方式,以便在 MySQL 和 Postgre(或其他)上运行?

【问题讨论】:

  • 尝试编写标准 SQL 通常是错误的。看看可用的数据库,看看你需要哪些功能,然后勇敢地选择一个满足你需求的数据库并针对它编写代码。有效地使用数据库所具有的特性。 “通用 SQL”通常是指慢速、不可维护的 SQL,仅适用于您测试过的两个数据库。
  • 添加到 Mark 的评论中,如果您需要支持不同的数据库供应商 - 要么查看 ORM(交易编码简单性以获得性能),要么使用为每个数据库供应商定制的 SQL(更好的性能,更多的工作) .

标签: sql mysql postgresql


【解决方案1】:

不,没有用于添加日期的 SQL 标准函数。

根据您构建应用程序的方式(使用数据库抽象层和/或接口层),您可能可以在那里以通用方式处理它,并且仍然让数据库而不是您的代码来计算。

【讨论】:

    【解决方案2】:

    在 MySQL 中你不需要 DATE_ADD,它的语法与 PostgreSQL 几乎相同:

    MySQL:SELECT CAST('2001-01-01' AS date) + INTERVAL 1 year;

    PostgreSQL:SELECT CAST('2001-01-01' AS date) + INTERVAL '1 year';

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2011-10-14
      • 2016-09-15
      • 2022-07-07
      相关资源
      最近更新 更多