ANSI SQL 减去一天

ANSI SQL for subtracting a day

同时支持 MySQL 和 SQL 服务器 我需要从日期中减去天数。这可以用 ANSI SQL 完成还是我需要维护两个版本?

例如。我有这个 MySQL:

SELECT
  CURRENT_DATE - INTERVAL '30' DAY
FROM dual;

没有针对 ANSI SQL 2003 规范的公开可用版本,但从一开始就没有供应商完全支持它。无论如何,这两者之间的语法差异足以为每个编写不同的代码。

MySQL 有一个 DATE_ADD 函数:

SELECT DATE_ADD(CURRENT_DATE, INTERVAL 30 DAY)
FROM dual;

SQL服务器有一个DATEADD函数(没有下划线):

SELECT DATEADD(DAY, 30, CAST(GETDATE() AS date))

GETDATE() return 日期和时间。演员去掉了时间部分。