從 PostgreSQL 中的時間戳日期中減去一天

Bilal Shahid 2023年1月30日
  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 函式,我們必須使用提供的關鍵字和子句。

作者: 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