答案:不同数据库提取日期中“天”的方法如下:1. MySQL使用DAY()或DAYOFMONTH();2. SQL Server使用DAY()或DATEPART(day, ...);3. PostgreSQL使用EXTRACT(DAY FROM ...);4. Oracle使用EXTRACT(DAY FROM ...)或TO_CHAR(..., 'DD')。

在SQL中,并没有名为 DAY函数 的统一标准函数,但大多数数据库系统提供了提取日期中“天”(即一个月中的第几天)的方法。不同数据库使用略有差异的语法来实现这一功能。本文将介绍如何在常见数据库中提取日期的“天”部分。
1. MySQL 中使用 DAY() 或 DAYOFMONTH()
在 MySQL 中,可以使用 DAY() 或 DAYOFMONTH() 函数从日期中提取“天”。语法:
DAY(date)
DAYOFMONTH(date)
示例:
SELECT DAY('2025-04-05'); -- 返回 5
SELECT DAYOFMONTH('2025-04-05'); -- 返回 5
SELECT DAY(NOW()); -- 返回当前日期的“天”
这两个函数功能完全相同,可根据习惯选择使用。
2. SQL Server 中使用 DAY()
在 SQL Server 中,使用 DAY() 函数提取日期中的“天”。语法:
DAY(date)
示例:
SELECT DAY('2025-04-05'); -- 返回 5
SELECT DAY(GETDATE()); -- 返回当前日期的“天”
也可以使用 DATEPART() 函数作为替代:
SELECT DATEPART(day, '2025-04-05'); -- 同样返回 5
3. PostgreSQL 中使用 EXTRACT()
PostgreSQL 不支持 DAY() 函数,需使用 EXTRACT() 函数提取“天”。语法:
EXTRACT(DAY FROM date)
示例:
SELECT EXTRACT(DAY FROM DATE '2025-04-05'); -- 返回 5
SELECT EXTRACT(DAY FROM CURRENT_DATE); -- 返回当前日
4. Oracle 中使用 EXTRACT() 或 TO_CHAR()
Oracle 支持多种方式提取“天”。方法一:EXTRACT()
SELECT EXTRACT(DAY FROM DATE '2025-04-05') FROM dual; -- 返回 5
方法二:TO_CHAR()
SELECT TO_CHAR(DATE '2025-04-05', 'DD') FROM dual; -- 返回 '05'(字符串)
注意:TO_CHAR 返回的是字符串类型,若需数值可用 TO_NUMBER 包装。
总结:
- MySQL: DAY() 或 DAYOFMONTH()
- SQL Server: DAY() 或 DATEPART(day, ...)
- PostgreSQL: EXTRACT(DAY FROM ...)
- Oracle: EXTRACT(DAY FROM ...) 或 TO_CHAR(..., 'DD')
基本上就这些,根据你使用的数据库选择对应函数即可。










