MySQL - MAKEDATE() 函数



MySQL 的MAKEDATE()函数用于根据给定的年内日期创建日期值。

此函数接受两个数值作为参数(按顺序),分别表示年份和一年中的第几天,根据这些值创建日期值,并返回结果。如果为dayofyear给定的值小于0,则此函数返回NULL。即使任何一个参数为NULL,结果仍然为NULL。

语法

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

MAKEDATE(year,dayofyear)

参数

此方法接受两个参数。下面描述了这两个参数:

  • year: 您要为其创建日期的年份。

  • dayofyear: 指定年份的一年中的第几天(1 到 366)。

返回值

此函数返回一个日期值,表示给定年份中指定的年内日期。

示例

在以下查询中,我们使用 MySQL 的MAKEDATE()函数根据给定的年内日期生成日期值:

SELECT MAKEDATE(1947, 98) As Result;

输出

这将产生以下结果:

结果
1947-04-08

示例

我们还可以将参数作为字符串值传递给此函数,如下所示:

SELECT MAKEDATE('1890', '25') As Result;

输出

以下是输出:

结果
1890-01-25

示例

如果第二个参数(dayofyear)为0,则此函数返回NULL

SELECT MAKEDATE(0, 0) As Result;

输出

以下是输出:

结果
NULL

示例

如果为年份传递的参数为0,则此函数假定给定的年份为 2000:

SELECT MAKEDATE(0, 1) As Result;

输出

以下是输出:

结果
2000-01-01

示例

如果此函数的任何一个参数为 NULL,则它返回NULL

SELECT MAKEDATE(NULL, 225) As Result;

输出

以下是输出:

结果
NULL

示例

让我们使用 CREATE 语句在 MySQL 数据库中创建一个名为PLAYERS的表,如下所示:

CREATE TABLE PLAYERS(
   ID int,
   NAME varchar(255),
   YEAROFBIRTH int,
   DAYOFYEAR int,
   COUNTRY VARCHAR(255),
   PRIMARY KEY (ID)
);

现在,我们将使用 INSERT 语句在 MyPlayers 表中插入 7 条记录:

INSERT INTO PLAYERS VALUES
(1, 'Shikhar Dhawan', 1981, 339, 'India'),
(2, 'Jonathan Trott', 1981, 112, 'SouthAfrica'),
(3, 'Kumara Sangakkara', 1977, 300, 'Srilanka'),
(4, 'Virat Kohli', 1988, 310, 'India'),
(5, 'Rohit Sharma', 1987, 120, 'India'),
(6, 'Ravindra Jadeja', 1988, 341, 'India'),
(7, 'James Anderson', 1982, 181, 'England');

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

Select * From PLAYERS;

以下是 PLAYERS 表:

ID NAME YEAROFBIRTH DAYOFYEAR COUNTRY
1 Shikhar Dhawan 1981 339 India
2 Jonathan Trott 1981 112 SouthAfrica
3 Kumara Sangakkara 1977 300 Srilanka
4 Virat Kohli 1988 310 India
5 Rohit Sharma 1987 120 India
6 Ravindra Jadeja 1988 341 India
7 James Anderson 1982 181 England

现在,我们使用 MySQL MAKEDATE() 函数检索并打印从提供的年份和年内日期值获得的出生日期

SELECT ID, NAME, COUNTRY, MAKEDATE(YEAROFBIRTH, DAYOFYEAR) 
As DateOfBirth From PLAYERS;

输出

输出如下所示:

ID NAME COUNTRY DateOfBirth
1 Shikhar Dhawan India 1981-12-05
2 Jonathan Trott SouthAfrica 1981-04-22
3 Kumara Sangakkara Srilanka 1977-10-27
4 Virat Kohli India 1988-11-05
5 Rohit Sharma India 1987-04-30
6 Ravindra Jadeja India 1988-12-06
7 James Anderson England 1982-06-30
广告