sql - 在 Postgres 和 SQL Server 中为日期添加一天

标签 sql sql-server postgresql sql-server-2017

我正在寻找一种在 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 中使用 datedatetime2 数据类型,仅 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/

相关文章:

sql - Oracle 更新基于 2 个其他表的连接

Python:将 Pandas Dataframe 写入 MSSQL --> 数据库错误

Windows:如何将我的 PostgreSQL 用户设置为 super 用户?

sql - 在 PostgreSQL 'where' 语句中使用数组

postgresql - Got syntax error 无法理解哪里出了问题

mysql - 在格式化 MySQL 查询以返回信息方面需要一些帮助

sql - 在 View 中使用带有 SQL 函数的联接

mysql - SQL 多个 where 条件不起作用

c++ - bcp_init rturns 访问冲突

c# - 如何在 SSRS 中显示二维码?