您好!欢迎访问家园网-www.jy.wang!

家园网

Dayofyear是个啥

网络 作者:本站 点击:

DAYOFYEAR 详细讲解


一、DAYOFYEAR 是什么?

DAYOFYEAR 是 SQL 中的一个日期函数,用于返回一个日期在当年中的第几天,返回值范围是 1 到 366

sql

SELECT DAYOFYEAR('2024-04-14');-- 结果:105(2024年1月1日算第1天,4月14日是第105天)


二、词源拆解

text

DAYOFYEAR = DAY + OF + YEAR

部分词源含义
DAY古英语 dæg天、日子
OF古英语 of的、属于
YEAR古英语 gēar

字面意思"日子在年份中的位置",即一年中的第几天。


三、语法

MySQL / SQL Server

sql

DAYOFYEAR(date)

Oracle

sql

TO_CHAR(date, 'DDD')  -- 返回字符串,如 '105'

PostgreSQL

sql

EXTRACT(DOY FROM date)  -- DOY = Day Of Year


四、各数据库写法对比

数据库

写法

示例

结果

MySQL

DAYOFYEAR('2024-04-14')

直接返回数字

105

SQL Server

DATEPART(DAYOFYEAR, '2024-04-14')

105


Oracle

TO_CHAR('2024-04-14', 'DDD')

'105'(字符串)


PostgreSQL

EXTRACT(DOY FROM '2024-04-14')

105



五、计算示例

1月1日:第1天

sql

SELECT DAYOFYEAR('2024-01-01');  -- 结果:1

2月1日:第32天(1月31天 + 1)

sql

SELECT DAYOFYEAR('2024-02-01');  -- 结果:32

12月31日:第366天(闰年)或第365天(平年)

sql

SELECT DAYOFYEAR('2024-12-31');  -- 结果:366(2024年是闰年)SELECT DAYOFYEAR('2023-12-31');  -- 结果:365(2023年是平年)


六、实际应用场景

1、计算今天是今年的第几天

sql

SELECT DAYOFYEAR(CURDATE());

2、计算距离年底还有多少天

sql

SELECT 
    DAYOFYEAR('2024-12-31') - DAYOFYEAR(CURDATE()) AS 剩余天数;

3、查询某个时间段内的数据(按年中的第几天筛选)

sql

-- 查询每年第100天到第150天之间录入的图书SELECT * FROM bookinfo 
WHERE DAYOFYEAR(intime) BETWEEN 100 AND 150;

4、判断今天是否在上半年

sql

SELECT 
    CASE 
        WHEN DAYOFYEAR(CURDATE()) <= 181 THEN '上半年'
        ELSE '下半年'
    END AS 时间段;


七、相关日期函数对比

函数

含义

返回值

示例(2024-04-14)

DAYOFYEAR()

一年中的第几天

1-366

105

DAYOFMONTH()

一个月中的第几天

1-31

14

DAYOFWEEK()

一周中的第几天

1-7(周日=1)

1(周日)或 7(周六,取决于设置)

WEEK()

一年中的第几周

1-53

15

MONTH()

月份

1-12

4

QUARTER()

季度

1-4

2


八、闰年的影响

年份

是否闰年

2月天数

全年天数

12月31日的 DAYOFYEAR

2023

❌ 平年

28天

365

365

2024

✅ 闰年

29天

366

366

2025

❌ 平年

28天

365

365


sql

-- 闰年判断SELECT 
    DAYOFYEAR('2024-12-31') AS 闰年最后一天,  -- 366
    DAYOFYEAR('2023-12-31') AS 平年最后一天;  -- 365


九、总结

问题答案
DAYOFYEAR 是什么?SQL 日期函数,返回日期在一年中的第几天
词源Day(天)+ Of(的)+ Year(年)= 一年中的第几天
返回值范围1(1月1日)到 366(闰年12月31日)
常见用途日期计算、统计分析、判断日期位置

一句话总结DAYOFYEAR 告诉你在一年365天(或366天)中,某个日期排在第几位——1月1日是第1天,12月31日是第365或366天


标签: