從 PostgreSQL 中的日期欄位中提取星期幾

Bilal Shahid 2024年2月15日
  1. 在 PostgreSQL 中使用 EXTRACT 從日期欄位中提取星期幾
  2. 在 PostgreSQL 中使用 To_CHAR() 函式從字串中獲取日期
  3. 在 PostgreSQL 中使用 CASE 定義 TIMESTAMPS 的天數劃分
從 PostgreSQL 中的日期欄位中提取星期幾

我們將在本教程中學習如何從 PostgreSQL 表中給出的 DATEFIELD 中查詢星期幾。我們還將學習不同的操作,你可以使用這些操作來操作和使用 DATEFIELD 中的資料。

我們使用 EXTRACT 函式來執行此類操作,它從具有 DATESTRING 中檢索子欄位。讓我們看看如何使用它。

在 PostgreSQL 中使用 EXTRACT 從日期欄位中提取星期幾

要提取星期幾,我們可以使用 DOWISODOWDOW 使用 SUNDAY 作為開始日期從 0 開始日期,但是 ISODOW 使用 MONDAY 並將 SUNDAY 列為 7。

查詢:

select extract (isodow from timestamp '2022-03-25');

這使用 TIMESTAMP 獲取星期幾並返回。

輸出:

在 PostgreSQL 中使用 EXTRACT 從日期欄位中提取星期幾

因此,在 2022 年 3 月 25 日,如果你從 SUNDAY 開始編號為 0,那麼當天是 Friday,你會看到 FRIDAY5

現在假設我們選擇 SUNDAY 作為我們的一天。在這種情況下,DOW 將返回 0,而 ISODOW 將返回 7,因為它們的模式不同。

你也可以自己測試這些值:

select extract (isodow from timestamp '2022-03-28') as iso_dow, extract (dow from timestamp '2022-03-28') as d_ow;

假設你希望 MONDAY 具有值 0。在這樣的問題中,你可以使用以下語句:

select extract (isodow from timestamp '2022-03-21') - 1;

TUESDAY 的情況下,你將減去 2,依此類推。

在 PostgreSQL 中使用 To_CHAR() 函式從字串中獲取日期

返回日期名稱的另一個函式是 To_CHAR()

查詢:

select to_char(timestamp '2022-03-25', 'DAY');

輸出:

在 PostgreSQL 中使用 To_CHAR() 函式從字串中獲取日期

查詢:

select to_char(timestamp '2022-03-25', 'DY');

使用上面的查詢將返回 FRI 而不是 FRIDAY。你可以閱讀第二個引數中可能使用的關鍵字。

要獲取 DAY,僅使用以下程式碼。

查詢:

select to_char(timestamp '2022-03-25', 'D');

PostgreSQL 文件的摘錄如下:

to_char(..., 'ID')'s day of the week numbering matches the extract(isodow from ...) function, but to_char(..., 'D')'s does not match extract(dow from ...)'s day numbering.

這意味著即使模式匹配,呼叫 D 作為第二個引數也不匹配 DOW 語法。

在 PostgreSQL 中使用 CASE 定義 TIMESTAMPS 的天數劃分

下面的程式碼使用了 EXTRACT 方法的擴充套件版本。

查詢:

with a as (select extract(dow from date '2022-02-21') a ),
b as(select CASE
         WHEN a.a = 0 THEN 'Sunday'
         WHEN a.a = 1 THEN 'Monday'
         WHEN a.a = 2 THEN 'Tuesday'
         WHEN a.a = 3 THEN 'Wednesday'
         WHEN a.a = 4 THEN 'Thursday'
         WHEN a.a = 5 THEN 'Friday'
         WHEN a.a = 6 THEN 'Saturday'
   END from a )
 select * from a, b;

它獲取值 a,然後 for b 檢查 a 是否與給定的 CASE 語句匹配。該值被複制到 b 中(如果有)。

這將返回如下所示的輸出。

輸出:

在 PostgreSQL 中使用 CASE 定義 TIMESTAMPS 的天數劃分

我們希望你現在瞭解可用於從任何給定的 STRING 中提取星期幾的各種方法。

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