从 PostgreSQL 中的时间戳日期中减去一天

Bilal Shahid 2023年1月30日 2022年5月14日
  1. 在 PostgreSQL 中使用 INTERVAL 关键字从时间戳日期中减去一天
  2. 在 PostgreSQL 中执行日期转换以从时间戳日期中减去一天
  3. 使用时间和日期从 PostgreSQL 中的时间戳日期中减去一天
从 PostgreSQL 中的时间戳日期中减去一天

在开始之前,让我们定义 SQL 中的时间戳。

在 DATE/TIME 标题下的 PostgreSQL 文档中,时间戳是一种以以下格式存储日期和时间的数据类型。

YYYY-MM-DD hh:mm:ss  (DATE | TIME)

时间戳的存储大小为 8 个字节。它可以带或不带时区显示。

时区的最小值是公元前 4713 年,最大值是公元 294276 年。

所以现在,让我们学习如何从时间戳中减去一天。

在 PostgreSQL 中使用 INTERVAL 关键字从时间戳日期中减去一天

要从时间戳查看日期,你可以执行以下操作。

select timestamp '2021-01-01 08:08:01'

它将显示从字符串中提取的时间戳。

你不能执行以下操作从该时间戳中扣除一天。它会抛出一个错误。

select timestamp '2021-01-01 08:08:01' - 1

输出:

ERROR:  operator does not exist: timestamp without time zone - integer
LINE 1: select timestamp '2021-01-01 08:08:01' - 1

为了解决这个问题,我们可以使用 INTERVAL 关键字。什么是间隔

INTERVAL 是时间戳的天数,换句话说,它的年龄。它不会返回日期;相反,两个特定日期之间的天数差异。

从当前日期减去参数(在午夜)

语法:

age ( timestamp ) ? interval

例子:

age(timestamp '1957-06-13') ? 62 years 6 mons 10 days

减去时间戳(将 24 小时间隔转换为天,类似于 justify_hours()

语法:

timestamp - timestamp ? interval

例子:

timestamp '2001-09-29 03:00' - timestamp '2001-07-27 12:00' ? 63 days 15:00:00

上面提供的语法取自 PostgreSQL 文档。

使用 INTERVAL 值从提供的时间戳增加或减少天数。因此,我们可以使用下面给出的查询:

select timestamp '2021-01-01 08:08:01' - INTERVAL '1 DAY'

这样做会从我们的时间戳中减去一天。

你还可以使用以下内容。

select timestamp '2021-01-01 08:08:01' - INTERVAL '24 HOURS'

由于 24 小时与 1 天相同,因此你可以使用上面给出的任何语法。

在 PostgreSQL 中执行日期转换以从时间戳日期中减去一天

语法:

select timestamp '2021-01-01 08:08:01'::DATE - 1

这将从日期中扣除一天。因为时间戳不允许减法,我们可以将其转换为日期并根据需要进行减法。

+- 运算符在 PostgreSQL 中使用,而不是标准的 DATEADDDATEDIFF

使用时间和日期从 PostgreSQL 中的时间戳日期中减去一天

PostgreSQL 中的 DATE 占用较少的存储空间,但不应在日历日期的情况下使用。在进行日期计算时,它甚至会考虑闰年。

DATES 的情况下,你可以使用以下代码。

select DATE '2021-01-01' - INTERVAL '1 DAY'

使用 INTEGER 关键字创建新日期

在 PostgreSQL 中使用的另一个值得注意的关键字是 INTEGER 关键字。

INTEGER 列在 PostgreSQL 文档中的日期/时间函数和运算符的标题下。这是一个更详细地定义事物的表格:

输出运算符表

要使用 + 关键字,请继续执行以下操作:

select DATE '2021-01-01' + INTEGER '7'

要在时间戳的情况下使用它,请执行 CASTING 并在其中添加 INTEGER 以生成所需的日期。

你不能执行 ADDMULTIPLYDIVISION 或任何其他带有时间戳的运算符。

请记住,DATE/INTEGERS 是按天数计算的,而不是按月、年或其他时间单位计算的。

许多人倾向于在 PostgreSQL 的扩展中实现 DATEDIFFDATEADD 函数。在这里,如果一切都失败了,你甚至可以使用它们。

因为 PostgreSQL7 不允许标准的 SQL DIFFADD 函数,我们必须使用提供的关键字和子句。

Author: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

相关文章 - PostgreSQL Date