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 |
示例
我们也可以将 expression 作为参数传递给此函数,如下所示 -
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 | Result |
---|---|---|
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 |