摘要:在本教程中,您將學習如何在 SQL 中從日期值或列中提取月份。
使用 EXTRACT 函式從日期中提取月份 #
SQL 為您提供了 EXTRACT 函式,允許您從日期值中提取月份。
這是 EXTRACT 函式的語法:
EXTRACT(MONTH FROM date_value)Code language: SQL (Structured Query Language) (sql)在此語法中:
- 首先,在
FROM關鍵字之前使用MONTH選項來從日期中提取月份。 - 其次,在
FROM關鍵字之後指定要從中提取月份的日期值 (date_value)。
如果 date_value 不是 DATE 型別的值,您可能需要先將其顯式轉換為 DATE 型別的值,然後再傳遞給 EXTRACT 函式。
要從表列中提取月份,您可以使用以下語法:
SELECT EXTRACT(MONTH FROM date_column)
FROM table_name;Code language: SQL (Structured Query Language) (sql)在此語法中:
- 首先,在
FROM關鍵字之前指定MONTH選項,以指示EXTRACT函式返回月份。 - 其次,在
FROM關鍵字之後將date_column傳遞給EXTRACT函式。
以下語句使用 EXTRACT 函式從日期值中提取月份:
SELECT EXTRACT(MONTH FROM '2025-01-19'::DATE) the_month;Code language: SQL (Structured Query Language) (sql)輸出
the_month
-----------
1Code language: SQL (Structured Query Language) (sql)在此示例中,我們使用型別轉換運算子 (::) 在 PostgreSQL 中將字串轉換為 DATE 型別的值。
以下示例使用 EXTRACT 函式從 employees 表的 hire_date 列中提取月份:
SELECT
first_name,
hire_date,
EXTRACT(MONTH FROM hire_date) joined_month
FROM
employees
ORDER BY
first_name;Code language: SQL (Structured Query Language) (sql)輸出
first_name | hire_date | joined_month
-------------+------------+--------------
Adam | 1997-04-10 | 4
Alexander | 1990-01-03 | 1
Alexander | 1995-05-18 | 5
Britney | 1997-03-03 | 3
Bruce | 1991-05-21 | 5
...Code language: SQL (Structured Query Language) (sql)使用 MONTH 函式從日期中提取月份 #
許多資料庫系統,包括 PostgreSQL、Oracle 和 Firebird,都廣泛支援 EXTRACT 函式。
然而,像 MySQL、MariaDB、SQL Server、Db2、SAP HANA、Informix 和 Teradata 這樣的資料庫系統不支援 EXTRACT 函式。它們提供了 MONTH 函式作為替代。
這是 MONTH 函式的語法:
MONTH(date_value)Code language: SQL (Structured Query Language) (sql)您也可以對 MONTH 函式使用日期列:
SELECT
MONTH(date_column)
FROM
table_name;Code language: SQL (Structured Query Language) (sql)例如,您可以在 MySQL 中使用 MONTH 函式從日期中提取月份,如下所示:
SELECT
first_name,
hire_date,
MONTH (hire_date) joined_month
FROM
employees
ORDER BY
first_name;Code language: SQL (Structured Query Language) (sql)輸出
first_name | hire_date | joined_month
-------------+------------+--------------
Adam | 1997-04-10 | 4
Alexander | 1990-01-03 | 1
Alexander | 1995-05-18 | 5
Britney | 1997-03-03 | 3
Bruce | 1991-05-21 | 5
Charles | 2000-01-04 | 1
...Code language: SQL (Structured Query Language) (sql)在 SQLite 中從日期提取月份 #
SQLite 既不支援 EXTRACT 函式也不支援 MONTH 函式。它提供了 strftime() 函式,您可以使用 '%m' 格式字串將日期格式化為月份:
strftime('%m', date_column)Code language: SQL (Structured Query Language) (sql)例如,您可以使用 strftime 函式從日期中提取月份,如下所示:
SELECT
strftime ('%m', '2025-01-19') the_month;Code language: SQL (Structured Query Language) (sql)輸出
the_month
-----------
01Code language: SQL (Structured Query Language) (sql)下表顯示了各種資料庫及其用於從日期中提取月份的相應函式:
| 關係型資料庫管理系統 (RDBMS) | 函式 | 示例 |
|---|---|---|
| PostgreSQL | EXTRACT(MONTH FROM date) | SELECT EXTRACT(MONTH FROM '2025-01-19'::DATE); |
| MySQL | MONTH(date) | SELECT MONTH('2025-01-19'); |
| MariaDB | MONTH(date) | SELECT MONTH('2025-01-19'); |
| Oracle | EXTRACT(MONTH FROM date) | SELECT EXTRACT(MONTH FROM DATE '2025-01-19') FROM DUAL; |
| SQL Server | MONTH(date) | SELECT MONTH('2025-01-19'); |
| SQLite | strftime('%Y', date) | SELECT strftime('%m', '2025-01-19'); |
| DB2 | MONTH(date) | SELECT MONTH(DATE('2025-01-19')) FROM SYSIBM.SYSDUMMY1; |
| Firebird | EXTRACT(MONTH FROM date) | SELECT EXTRACT(MONTH FROM DATE '2025-01-19') FROM RDB$DATABASE; |
| SAP HANA | MONTH(date) | SELECT MONTH('2025-01-19') FROM DUMMY; |
| Teradata | EXTRACT(MONTH FROM date) | SELECT EXTRACT(MONTH FROM DATE '2025-01-19'); |
| Informix | MONTH(date) | SELECT MONTH('2025-01-19') FROM systables WHERE tabid = 1; |
本教程是否有幫助?