我正在寻找一种在 Postgres 和 SQL Server 中为日期添加一天的方法,这样我就不必添加 if 条件来检查服务器正在运行的数据库
DATEADD(day, 1, STOP_DATE)
不适用于 PostgreSQL &
STOP_DATE + 1
在 sql server 中不工作
最佳答案
总的来说,尝试使用在 SQL Server 和 Postgres 上通用的语法编写 SQL 代码并不是一个好主意。您严重限制了自己,迟早会遇到运行速度太慢的查询,因为它不使用特定于某个 DBMS 的语法。
例如,在您的方法中,您人为地拒绝使用横向联接,因为它们在 Postgres (LATERAL JOIN
) 和 SQL Server (CROSS/OUTER APPLY
) 中的语法不同>).
回到你的问题。
您可以将整数值添加到 Postgres 中的 date
值和 SQL Server 中的 datetime
值。
SQL Server
CREATE TABLE T(d datetime);
INSERT INTO T VALUES ('2020-01-01');
SELECT
d, d+1 AS NextDay
FROM T
http://sqlfiddle.com/#!18/d519d9/1
这将不在 SQL Server 中使用 date
或 datetime2
数据类型,仅 datetime
。
Postgres
CREATE TABLE T(d date);
INSERT INTO T VALUES ('2020-01-01');
SELECT
d, d+1 AS NextDay
FROM T
http://sqlfiddle.com/#!17/b9670/2
我不知道它是否适用于其他数据类型。
关于sql - 在 Postgres 和 SQL Server 中为日期添加一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68254668/