MySQL - DAYOFYEAR() 函数



MySQL 的 DAYOFYEAR() 函数用于检索给定日期的一年中的第几天。此函数返回表示一年中的第几天的数值,该数值将是 1 到 366 之间的数字。

这里的一年中的第几天指的是从 1 月 1 日开始分配给日期的数值,从 1 到 365(或 366,如果为闰年)。因此,此函数的结果始终介于 1 和 366 之间。

如果传递给它的日期为空、空字符串或无效日期,则该函数将返回 NULL。

语法

以下是 MySQL DAYOFYEAR() 函数的语法:

DAYOFYEAR(date);

参数

此方法接受您需要从中获取一年中的第几天的日期值作为参数。

返回值

此函数返回提供的日期的一年中的第几天。

示例

在以下查询中,我们使用 MySQL DAYOFYEAR() 函数提取给定日期的一年中的第几天:

SELECT DAYOFYEAR('2019-05-25') As Result;

输出

上面查询的输出如下所示:

结果
145

示例

如果给定日期中的日期部分为 0,则此函数返回 NULL:

SELECT DAYOFYEAR('2017-00-00') As Result;

输出

这将产生以下结果:

结果
0

示例

如果将空字符串或非字符串值作为参数传递,则此函数返回 NULL。

SELECT DAYOFYEAR('')  As Result;

这将产生以下结果:

结果
NULL

在这里,我们将非字符串值作为此函数的参数传递:

SELECT DAYOFYEAR(1990-11-11) As Result;

这将产生以下结果:

结果
NULL

示例

我们还可以将日期时间表达式作为此函数的参数传递:

SELECT DAYOFYEAR('2015-09-05 09:40:45.2300') As Result;

输出

这将产生以下结果:

结果
248

示例

在以下示例中,我们从当前日期检索一年中的第几天值:

SELECT DAYOFYEAR(CURDATE()) As Result;

输出

这将产生以下结果:

结果
315

示例

我们还可以将列名作为此函数的参数传递。让我们使用 CREATE 语句创建一个名为 ORDERS 的表,如下所示:

CREATE TABLE ORDERS (
   OID INT NOT NULL,
   DATE VARCHAR (20) NOT NULL,
   CUSTOMER_ID INT NOT NULL,
   AMOUNT DECIMAL (18, 2)
);

现在,使用 INSERT 语句将以下记录插入 ORDERS 表中:

INSERT INTO ORDERS VALUES 
(102, '2009-10-08 00:00:00', 3, 3000.00),
(100, '2009-10-08 00:00:00', 3, 1500.00),
(101, '2009-11-20 00:00:00', 2, 1560.00),
(103, '2008-05-20 00:00:00', 4, 2060.00);

执行以下查询以获取上面创建的表中的所有插入记录:

Select * From ORDERS;

以下是 ORDERS 表:

OID DATE CUSTOMER_ID AMOUNT
102 2009-10-08 00:00:00 3 3000.00
100 2009-10-08 00:00:00 3 1500.00
101 2009-11-20 00:00:00 2 1560.00
103 2008-05-20 00:00:00 4 2060.00

现在,我们使用 MySQL DAYOFYEAR() 函数检索 DATE 列中所有日期时间值的一年中的第几天。

SELECT OID, DATE, DAYOFYEAR(DATE) From ORDERS;

输出

输出如下所示:

OID DATE DAYOFYEAR(DATE)
102 2009-10-08 00:00:00 281
100 2009-10-08 00:00:00 281
101 2009-11-20 00:00:00 324
103 2008-05-20 00:00:00 141
广告