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
廣告