如何在 SQL 中從日期提取年份

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

使用 EXTRACT 函式從日期中提取年份 #

SQL 提供了 EXTRACT 函式來從日期值中提取年份。以下是 EXTRACT 函式的語法:

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

在此語法中,請在 FROM 關鍵字後指定要從中提取年份的日期值 (date_value)。

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

要從表列中提取年份,請使用以下語法:

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

在此語法中,您將 date_column 傳遞給 EXTRACT 函式的 FROM 關鍵字之後。

以下語句使用 EXTRACT 函式從日期值中提取年份:

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

試一試

輸出

 the_year
----------
     2025Code language: SQL (Structured Query Language) (sql)

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

以下示例使用 EXTRACT 函式從 employees 表的 hire_date 列中提取年份:

SELECT
  hire_date,
  EXTRACT(YEAR FROM  hire_date) joined_year
FROM
  employees
ORDER BY
  joined_year DESC;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 hire_date  | joined_year
------------+-------------
 2000-01-04 |        2000
 1999-12-07 |        1999
 1999-05-24 |        1999
 1999-02-07 |        1999
...Code language: SQL (Structured Query Language) (sql)

使用 YEAR 函式從日期中提取年份 #

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

然而,像 MySQL、MariaDB、SQL Server、Db2、SAP HANA、Informix 和 Teradata 等資料庫系統不支援 EXTRACT 函式。它們提供了 YEAR 函式作為替代。

以下是 YEAR 函式的語法:

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

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

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

例如,您可以在 MySQL 中使用 YEAR 函式從日期中提取年份,如下所示:

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

試一試

輸出

 first_name  | hire_date  | joined_year
-------------+------------+-------------
 Jennifer    | 1987-09-17 |        1987
 Steven      | 1987-06-17 |        1987
 Neena       | 1989-09-21 |        1989
 Alexander   | 1990-01-03 |        1990
...Code language: SQL (Structured Query Language) (sql)

在 SQLite 中從日期提取年份 #

SQLite 不支援 EXTRACTYEAR 函式。但它提供了 strftime() 函式,您可以使用 '%Y' 格式字串將日期格式化為年份:

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

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

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

試一試

輸出

 the_year
----------
     2025Code language: SQL (Structured Query Language) (sql)

下表顯示了各個資料庫及其用於從日期中提取年份的相應函式:

關係型資料庫管理系統 (RDBMS)函式示例
PostgreSQLEXTRACT(YEAR FROM date)SELECT EXTRACT(YEAR FROM '2025-01-19'::DATE);
MySQLYEAR(date)SELECT YEAR('2025-01-19');
MariaDBYEAR(date)SELECT YEAR('2025-01-19');
OracleEXTRACT(YEAR FROM date)SELECT EXTRACT(YEAR FROM DATE '2025-01-19') FROM DUAL;
SQL ServerYEAR(date)SELECT YEAR('2025-01-19');
SQLitestrftime('%Y', date)SELECT strftime('%Y', '2025-01-19');
DB2YEAR(date)SELECT YEAR(DATE('2025-01-19')) FROM SYSIBM.SYSDUMMY1;
FirebirdEXTRACT(YEAR FROM date)SELECT EXTRACT(YEAR FROM DATE '2025-01-19') FROM RDB$DATABASE;
SAP HANAYEAR(date)SELECT YEAR('2025-01-19') FROM DUMMY;
TeradataEXTRACT(YEAR FROM date)SELECT EXTRACT(YEAR FROM DATE '2025-01-19');
InformixYEAR(date)SELECT YEAR('2025-01-19') FROM systables WHERE tabid = 1;

本教程是否有幫助?
© .