如何在 SQL 中從日期提取天

摘要:在本教程中,您將學習如何在 SQL 中從日期值或列中提取“天”。

使用 EXTRACT 函式從日期中提取“天” #

SQL 提供了 EXTRACT 函式,允許您從日期值中提取“天”。

這是 EXTRACT 函式的語法:

EXTRACT(DAY FROM date_value)Code language: SQL (Structured Query Language) (sql)

在此語法中:

  • 首先,在 FROM 關鍵字之前使用 DAY 選項來從日期中提取“天”。
  • 其次,在 FROM 關鍵字之後指定要從中提取“天”的日期值 (date_value)。

如果 date_value 不是 DATE 型別的值,您可能需要先將其顯式轉換為 DATE 型別的值,然後再傳遞給 EXTRACT 函式。

下面顯示了使用 EXTRACT 函式從表列中提取“天”的語法:

SELECT EXTRACT(DAY FROM date_column)
FROM table_name;Code language: SQL (Structured Query Language) (sql)

在此語法中:

  • 首先,在 FROM 關鍵字之前指定 DAY 選項,以指示 EXTRACT 函式返回“天”。
  • 其次,在 FROM 關鍵字之後將 date_column 傳遞給 EXTRACT 函式。

以下語句使用 EXTRACT 函式從日期值中提取“天”:

SELECT EXTRACT(DAY FROM '2025-01-19'::DATE) the_day;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 the_day
---------
      19Code language: SQL (Structured Query Language) (sql)

在此示例中,我們使用型別轉換運算子 (::) 在 PostgreSQL 中將字串轉換為 DATE 型別的值。

以下示例使用 EXTRACT 函式從 employees 表的 hire_date 列中提取“天”:

SELECT
  first_name,
  hire_date,
  EXTRACT(day FROM hire_date) joined_day
FROM
  employees
ORDER BY
  first_name;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 first_name  | hire_date  | joined_day
-------------+------------+------------
 Adam        | 1997-04-10 |         10
 Alexander   | 1990-01-03 |          3
 Alexander   | 1995-05-18 |         18
 Britney     | 1997-03-03 |          3
 Bruce       | 1991-05-21 |         21
 Charles     | 2000-01-04 |          4Code language: SQL (Structured Query Language) (sql)

使用 DAY 函式從日期中提取“天” #

包括 PostgreSQL、Oracle 和 Firebird 在內的許多資料庫系統都廣泛支援 EXTRACT 函式。

然而,像 MySQL、MariaDB、SQL Server、Db2、SAP HANA、Informix 和 Teradata 這樣的資料庫系統不支援 EXTRACT 函式。相反,它們提供了 DAY() 函式,允許您從日期值中提取“天”。

這是 DAY 函式的語法:

DAY(date_value)Code language: SQL (Structured Query Language) (sql)

您也可以對 DAY 函式使用日期列:

SELECT
  DAY(date_column)
FROM
  table_name;Code language: SQL (Structured Query Language) (sql)

例如,您可以在 MySQL 中使用 day 函式從日期中提取“天”,如下所示:

SELECT
  first_name,
  hire_date,
  DAY (hire_date) joined_day
FROM
  employees
ORDER BY
  first_name;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 first_name  | hire_date  | joined_day
-------------+------------+------------
 Adam        | 1997-04-10 |         10
 Alexander   | 1990-01-03 |          3
 Alexander   | 1995-05-18 |         18
 Britney     | 1997-03-03 |          3
 Bruce       | 1991-05-21 |         21
...Code language: SQL (Structured Query Language) (sql)

在 SQLite 中從日期提取“天” #

SQLite 不支援 EXTRACTDAY 函式。相反,它提供了 strftime() 函式,您可以使用 '%d' 格式字串將日期格式化為“天”。

strftime('%d', date_column)Code language: SQL (Structured Query Language) (sql)

例如,您可以使用 strftime 函式從日期中提取“天”,如下所示:

SELECT
  strftime ('%d', '2025-01-19') the_day;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 the_day
---------
 19Code language: SQL (Structured Query Language) (sql)

下表顯示了各個資料庫系統及其用於從日期中提取“天”的相應函式:

關係型資料庫管理系統 (RDBMS)函式示例
PostgreSQLEXTRACT(DAY FROM date)SELECT EXTRACT(DAY FROM '2025-01-19'::DATE);
MySQLDAY(date)SELECT DAY('2025-01-19');
MariaDBDAY(date)SELECT DAY('2025-01-19');
OracleEXTRACT(DAY FROM date)SELECT EXTRACT(DAY FROM DATE '2025-01-19') FROM DUAL;
SQL ServerDAY(date)SELECT DAY('2025-01-19');
SQLitestrftime('%d', date)SELECT strftime('%d', '2025-01-19');
DB2DAY(date)SELECT DAY(DATE('2025-01-19')) FROM SYSIBM.SYSDUMMY1;
FirebirdEXTRACT(DAY FROM date)SELECT EXTRACT(DAY FROM DATE '2025-01-19') FROM RDB$DATABASE;
SAP HANADAY(date)SELECT DAY('2025-01-19') FROM DUMMY;
TeradataEXTRACT(DAY FROM date)SELECT EXTRACT(DAY FROM DATE '2025-01-19');
InformixDAY(date)SELECT DAY('2025-01-19') FROM systables WHERE tabid = 1;

本教程是否有幫助?
© .