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