MySQL - FROM_DAYS() 函式



MySQL 的 FROM_DAYS() 函式接受一個數值,該數值表示從基於公曆的第 0 年開始計算的天數,並返回日期值。

使用此函式,指定的日期值除以 365,並相應地返回年、月和日。例如,如果我們將 370 作為引數傳遞給函式,則該值將除以 365,並得到 5 作為餘數。由於日期值是根據公曆檢索的,因此在這種情況下返回的日期將是 0001-01-05。

注意:計數從現代日曆的第一年開始,因此,如果傳遞給此函式的引數小於 366,則返回值將始終為“0000-00-00”。

語法

以下是 MySQL FROM_DAYS() 函式的語法:

FROM_DAYS(N);

引數

此方法接受一個數字作為引數,該數字表示自 MySQL 日期系統開始以來的天數。

返回值

此函式將自 MySQL 日期系統開始以來的天數轉換為日期。它返回一個日期值。

示例

在以下查詢中,我們使用 MySQL FROM_DAYS() 函式將 400 轉換為日期格式並返回相應的日期:

SELECT FROM_DAYS(400) As Result;

輸出

獲得以下輸出:

結果
0001-02-04

示例

如果傳遞給此函式的引數值小於 366(現代日曆的第一年),則此函式返回 0000-00-00

SELECT FROM_DAYS(21) As Result;

輸出

獲得以下輸出:

結果
0000-00-00

示例

如果日期值大於 3599999,則此函式返回 0000-00-00

SELECT FROM_DAYS('3599999') As Result;

這將產生以下結果:

結果
9856-06-18

這裡,我們將大於 3599999 的值傳遞給此函式:

SELECT FROM_DAYS('3666585') As Result;

獲得以下輸出:

結果
0000-00-00

示例

我們還可以將 表示式 作為引數傳遞給此函式,如下所示:

SELECT FROM_DAYS(365.25*2021) As Result;

輸出

這將產生以下結果:

結果
2021-01-15

示例

在此示例中,我們使用以下 CREATE TABLE 查詢建立了一個名為 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 FROM_DAYS() 函式透過將 "AMOUNT" 列中的值轉換為日期格式來計算結果:

SELECT OID, DATE, FROM_DAYS(AMOUNT) as Result FROM Orders;

輸出

輸出如下所示:

OID DATE 結果
102 2009-10-08 00:00:00 0008-03-19
100 2009-10-08 00:00:00 0008-03-19
101 2009-11-20 00:00:00 0004-04-09
103 2008-05-20 00:00:00 0005-08-22
廣告