DATEOFYEAR | EXTRACT | FROM_DAYS | FROM_UNIXTIME |
HOUR | LAST_DAY | LOCALTIME | LOCALTIMESTAMP |
1、DATEOFYEAR
DATEOFYEAR(expr)
:返回一个从 1
到 366
代表给定日期是一年中的第几天的数字。
- 如果指定的表达式不是一个合法的日期或者日期时间,
DAYOFYEAR()
函数将返回NULL
。- 如果参数为
NULL
,DAYOFYEAR()
函数将返回NULL
。
SELECT
DAYOFYEAR('2024-01-01'),
DAYOFYEAR('2024-01-31'),
DAYOFYEAR('2024-02-28 10:10:10'),
DAYOFYEAR('2024-02-00'),
DAYOFYEAR('2024-02-30'),
DAYOFYEAR('Not A DATE'),
DAYOFYEAR(NULL)
SELECT
DAYOFYEAR(NOW()),
DAYOFYEAR(CURDATE()),
DAYOFYEAR(CURRENT_DATE()),
DAYOFYEAR(SYSDATE())
2、EXTRACT
EXTRACT(unit FROM date)
:从指定的日期/时间中提取指定的部分并返回。
| SECOND | MINUTE | HOUR |
DAY | WEEK | MONTH | QUARTER |
YEAR | SECOND_MICROSECOND | MINUTE_MICROSECOND | MINUTE_SECOND |
HOUR_MICROSECOND | HOUR_SECOND | HOUR_MINUTE | DAY_MICROSECOND |
DAY_SECOND | DAY_MINUTE | DAY_HOUR | YEAR_MONTH |
如果指定的表达式不是一个合法的日期或者日期时间,
EXTRACT()
函数将返回NULL
。如果参数为
NULL
,EXTRACT()
函数将返回NULL
。
SELECT
EXTRACT(YEAR FROM '2024-02-28') AS A,
EXTRACT(MONTH FROM '2024-02-28') AS B,
EXTRACT(DAY FROM '2024-02-28') AS C,
EXTRACT(HOUR FROM '10:11:12') AS D,
EXTRACT(MINUTE FROM '10:11:12') AS E,
EXTRACT(SECOND FROM '10:11:12') AS F,
EXTRACT(HOUR FROM '2024-02-28 10:11:12') AS G,
EXTRACT(MINUTE FROM '2024-02-28 10:11:12') AS H,
EXTRACT(SECOND FROM '2024-02-28 10:11:12') AS I
3、FROM_DAYS
FROM_DAYS(days)
:将指定的天数转为日期并返回。FROM_DAYS()
函数与 TO_DAYS() 函数是相反的。
SELECT
FROM_DAYS(738579),
FROM_DAYS(738580);
-- 结果
+-------------------+-------------------+
| FROM_DAYS(738579) | FROM_DAYS(738580) |
+-------------------+-------------------+
| 2022-02-28 | 2022-03-01 |
+-------------------+-------------------+
4、FROM_UNIXTIME
FROM_UNIXTIME(
unix_timestamp[, format])
:将 UNIX 时间戳数值转为日期时间,并可根据指定的格式格式化。
如果不提供
format
参数,FROM_UNIXTIME()
函数将返回一个日期时间类型的值;否则FROM_UNIXTIME()
函数将按照format
格式返回个字符串。如果参数为
NULL
,FROM_UNIXTIME()
函数将返回NULL
。
SELECT FROM_UNIXTIME(1649839394);
-- 结果
+---------------------------+
| FROM_UNIXTIME(1649839394) |
+---------------------------+
| 2022-04-13 08:43:14 |
+---------------------------+
SELECT FROM_UNIXTIME(1649839394, '%Y%m%d%H%i%S');
-- 结果
+-------------------------------------------+
| FROM_UNIXTIME(1649839394, '%Y%m%d%H%i%S') |
+-------------------------------------------+
| 20220413084314 |
+-------------------------------------------+
5、HOUR
HOUR(time
)
:提取并返回时间的小时部分。
- 如果
time
中没有小时部分,HOUR()
函数将返回0
。- 如果参数为
NULL
,HOUR()
函数将返回NULL
。- 因为 MySQL 支持的最大时间为
838:59:59
,HOUR()
函数的最大返回值是838
。
SELECT
HOUR('10:10:10'),
HOUR('2024-02-28 10:10:10'),
HOUR('123:10:10'),
HOUR('1234:10:10'),
HOUR('2024-02-00'),
HOUR('2024-02-30'),
HOUR('Not A DATE'),
HOUR(NULL)
6、LAST_DAY
LAST_DAY(date
)
:返回指定的日期时间所在当月的最后一天。
SELECT
LAST_DAY('2019-02-01'),
LAST_DAY('2020-02-01'),
LAST_DAY('2021-02-01'),
LAST_DAY('2022-02-01'),
LAST_DAY('2022-02-01 10:11:12')
7、LOCALTIME
LOCALTIME(
)
:按 YYYY-MM-DD hh:mm:ss
格式返回当前时间和日期。
LOCALTIME()
函数与 NOW() 函数完全相同。
SELECT
LOCALTIME,
LOCALTIME(),
LOCALTIME() + 1;
8、LOCALTIMESTAMP
LOCALTIMESTAMP(
)
:按 YYYY-MM-DD hh:mm:ss
格式返回当前时间和日期。
LOCALTIMESTAMP()
函数与 NOW() 函数完全相同。
SELECT
LOCALTIME,
LOCALTIME(),
LOCALTIME() + 1;