從 PostgreSQL 中的時間戳日期中減去一天
-
在 PostgreSQL 中使用
INTERVAL
關鍵字從時間戳日期中減去一天 - 在 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 中使用,而不是標準的 DATEADD
和 DATEDIFF
。
使用時間和日期從 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
以生成所需的日期。
你不能執行 ADD
、MULTIPLY
、DIVISION
或任何其他帶有時間戳的運算子。
請記住,DATE/INTEGERS
是按天數計算的,而不是按月、年或其他時間單位計算的。
許多人傾向於在 PostgreSQL 的擴充套件中實現 DATEDIFF
和 DATEADD
函式。在這裡,如果一切都失敗了,你甚至可以使用它們。
因為 PostgreSQL7 不允許標準的 SQL DIFF
和 ADD
函式,我們必須使用提供的關鍵字和子句。
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