一、 返回当前日期
1、CURRENT_DATE()、CURRENT_DATE和CURDATE()用法相同:返回当前日期
2、CURRENT_TIME()、CURRENT_TIME和CURTIME()用法相同:返回当前时间
3、CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP、LOCALTIMESTAMP()、LOCALTIMESTAMP、LOCALTIME()、LOCALTIME和NOW()用法相同:返回当前日期和时间
4、SYSDATE():返回函数执行时的时间
注意:NOW()取自mysql的变量”TIMESTAMP”,而这个变量在语句开始执行的时候就设定好了,所以在整个语句执行过程当中都不会变化,而SYSDATE()取的是动态的实时时间。
示例:SELECT NOW(),SYSDATE(),SLEEP(3),NOW(),SYSDATE()
输出结果:2022-10-15 16:18:18,2022-10-15 16:18:18,0,2022-10-15 16:18:18,2022-10-15 16:18:21
二、 提取日期部分
1、DATE() 函数用于提取日期或日期时间的日期部分。
示例:SELECT DATE('2022-10-15 16:45:30');
输出结果: 2022-10-15
2、DAY() 函数返回月份中的天数,是DAYOFMONTH()的同义词。
示例:SELECT DAY('2022-10-15');
输出结果:15
3、DAYNAME() 函数返回给定日期对应的周几的名称。
示例:SELECT DAYNAME('2022-10-15');
输出结果:Saturday
4、DAYOFMONTH() 函数返回一个日期的月份中的天数(0-31)。
示例:SELECT DAYOFMONTH('2022-10-15');
输出结果:15
5、DAYOFWEEK() 函数返回参数的星期索引。
示例:SELECT DAYOFWEEK('2022-10-15');
输出结果:7
6、DAYOFYEAR() 函数返回一年中的天数(1-366)。
示例:SELECT DAYOFYEAR('2022-10-15');
输出结果:288
7、EXTRACT() 函数用于从日期中提取指定部分内容。
示例:SELECT EXTRACT(YEAR FROM '2022-10-15');
输出结果:2022
8、FROM_DAYS() 函数将天数转换为日期。
示例:SELECT FROM_DAYS(8765);
输出结果:1998-05-19
9、LAST_DAY
函数返回参数所在月份的最后一天。
示例:SELECT LAST_DAY('2022-10-15');
输出结果:2022-10-31
10、MONTH() 函数返回日期的月份。
示例:SELECT MONTH('2022-10-15');
输出结果:10
11、MONTHNAME() 函数返回月份的名称。
示例:SELECT MONTHNAME('2022-10-15');
输出结果:October
12、QUARTER() 函数返回日期的季度。
示例:SELECT QUARTER('2022-10-15');
输出结果:4
13、WEEK() 函数返回给定日期的周数。
示例:SELECT WEEK('2022-10-15');
输出结果:41
14、WEEKDAY() 函数返回星期索引。
示例:SELECT WEEKDAY('2022-10-15');
输出结果:5
15、WEEKOFYEAR() 函数返回日期所在年份的周数。
示例:SELECT WEEKOFYEAR('2022-10-15');
输出结果:41
16、YEAR() 函数返回年份。
示例:SELECT YEAR('2022-10-15');
输出结果:2022
17、YEARWEEK() 函数返回年份和周数。
示例:SELECT YEARWEEK('2022-10-15');
输出结果:202241
18、TIME() 函数用于提取表达式中的时间部分。
示例:SELECT TIME('2022-10-15 16:45:30');
输出结果:16:45:30
19、HOUR() 函数用于提取小时数。
示例:SELECT HOUR('16:45:30');
输出结果:16
20、MICROSECOND() 函数返回参数中的微秒数。
示例:SELECT MICROSECOND('16:45:30.123456');
输出结果:123456
21、MINUTE() 函数返回参数中的分钟数。
示例:SELECT MINUTE('16:45:30');
输出结果:45
22、SECOND() 函数返回参数中的秒数。
示例:SELECT SECOND('16:45:30');
输出结果:30
三、 增加和减去时间
1、ADDDATE():向日期值增加时间间隔
用法:ADDDATE(date, INTERVAL expr unit)
示例:SELECT ADDDATE('2022-01-01', INTERVAL 7 DAY);
-- 输出结果:'2022-01-08'
2、ADDTIME():加上指定的时间
用法:ADDTIME(time, TIME expr)
示例:SELECT ADDTIME('10:15:30', '02:30:00');
-- 输出结果:'12:45:30'
3、DATE_ADD():向日期值增加时间间隔
用法:DATE_ADD(date, INTERVAL expr unit)
示例:SELECT DATE_ADD('2022-01-01', INTERVAL 1 MONTH);
-- 输出结果:'2022-02-01'
4、DATE_SUB():从日期中减去时间间隔
用法:DATE_SUB(date, INTERVAL expr unit)
示例:SELECT DATE_SUB('2022-01-01', INTERVAL 2 WEEK);
-- 输出结果:'2021-12-18'
5、DATEDIFF():计算两个日期之间的差值
用法:DATEDIFF(end_date, start_date)
示例:SELECT DATEDIFF('2022-01-10', '2022-01-01');
-- 输出结果:9
6、SUBDATE():当使用三个参数调用时,是DATE_SUB()的同义词
用法:SUBDATE(date, INTERVAL expr unit)
示例:SELECT SUBDATE('2022-01-01', INTERVAL 1 YEAR);
-- 输出结果:'2021-01-01'
7、SUBTIME():减去时间
用法:SUBTIME(time, TIME expr)
示例:SELECT SUBTIME('12:00:00', '00:30:00');
-- 输出结果:'11:30:00'
8、TIMEDIFF():计算时间差
用法:TIMEDIFF(time1, time2)
示例:SELECT TIMEDIFF('14:30:00', '12:15:00');
-- 输出结果:'02:15:00'
9、TIMESTAMPADD():给日期时间添加指定单位的时间
用法:TIMESTAMPADD(unit, interval, datetime_expr)
示例:SELECT TIMESTAMPADD(MONTH, 3, '2022-01-01');
-- 输出结果:'2022-04-01'
10、TIMESTAMPDIFF():返回两个日期时间表达式的时间差,使用指定的单位
用法:TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
示例:SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-01-10');
-- 输出结果:9
11、PERIOD_ADD():将N个月增加到格式为YYMM或YYYYMM的时间P中。返回格式为YYYYMM的值。 如果P或N为空,则此函数返回NULL。
用法:PERIOD_ADD(P, N)
示例:SELECT PERIOD_ADD(202201, 3);
-- 输出结果:202204
12、PERIOD_DIFF():返回两个时间(格式为YYMM或YYYYMM)之间的月数。
用法:PERIOD_DIFF(P1, P2)
示例:SELECT PERIOD_DIFF(202203, 202201);
-- 输出结果:2
四、格式化日期和时间
1、DATE_FORMAT():按指定格式格式化日期
用法:DATE_FORMAT(date, format)
示例:SELECT DATE_FORMAT('2022-10-31', '%Y/%m/%d')
输出结果:2022/10/31
2、FROM_UNIXTIME():将Unix时间戳格式化为日期
用法:FROM_UNIXTIME(unix_timestamp, format)
示例:SELECT FROM_UNIXTIME(1635657600, '%Y-%m-%d %H:%i:%s')
输出结果:2021-10-31 00:00:00
3、GET_FORMAT():返回日期格式字符串
用法:GET_FORMAT(format_type, locale)
示例:SELECT GET_FORMAT(DATE, 'fr_FR')
输出结果:%d.%m.%Y
4、TIME_FORMAT():格式化时间
用法:TIME_FORMAT(time, format)
示例:SELECT TIME_FORMAT('16:45:30', '%h:%i %p')
输出结果:04:45 PM
5、MAKEDATE():根据年份和一年中的天数创建日期
用法:MAKEDATE(year, day_of_year)
示例:SELECT MAKEDATE(2022, 300)
输出结果:2022-10-27
6、MAKETIME():根据小时、分钟和秒创建时间
用法:MAKETIME(hour, minute, second)
示例:SELECT MAKETIME(12, 30, 0)
输出结果:12:30:00
7、TO_DAYS():将日期参数转换为从公元0年开始的天数
用法:TO_DAYS(date)
示例:SELECT TO_DAYS('2022-10-31')
输出结果:737986
8、TO_SECONDS():将日期或日期时间参数转换为从公元0年开始的秒数
用法:TO_SECONDS(datetime)
示例:SELECT TO_SECONDS('2021-10-31 00:00:00')
输出结果:63768716800
9、SEC_TO_TIME():将秒数转换为 'hh:mm:ss' 格式
用法:SEC_TO_TIME(seconds)
示例:SELECT SEC_TO_TIME(3660)
输出结果:01:01:00
10、TIME_TO_SEC():将参数转换为秒数
用法:TIME_TO_SEC(time)
示例:SELECT TIME_TO_SEC('02:30:45')
输出结果:9045
11、UNIX_TIMESTAMP():返回Unix时间戳
用法:UNIX_TIMESTAMP(), UNIX_TIMESTAMP(datetime)
示例:SELECT UNIX_TIMESTAMP()
输出结果:1640611200
12、TIMESTAMP():带有一个参数时,返回日期或日期时间表达式;带有两个参数时,返回参数的总和
用法:TIMESTAMP(expr), TIMESTAMP(expr1, expr2)
示例:SELECT TIMESTAMP('2022-10-31'), SELECT TIMESTAMP('2022-10-31', '12:30:00')
输出结果:2022-10-31 00:00:00, 2022-10-31 12:30:00
五、时区转换
1、CONVERT_TZ(): 将一个时区转换为另一个时区
该函数用于将给定的时间值从一个时区转换为另一个时区。它接受三个参数:要转换的时间值、原始时区和目标时区。返回值是在目标时区下的对应时间值。
用法:SELECT CONVERT_TZ('2022-03-15 10:30:00', 'America/New_York', 'Asia/Tokyo');
输出结果:2022-03-15 23:30:00
2、UTC_DATE(): 返回当前的UTC日期
该函数返回当前系统时间的日期部分,使用协调世界时 (UTC) 表示。它不需要任何参数。
用法:SELECT UTC_DATE();
输出结果:2022-07-12
3、UTC_TIME(): 返回当前的UTC时间
该函数返回当前系统时间的时间部分,使用协调世界时 (UTC) 表示。它不需要任何参数。
用法:SELECT UTC_TIME();
输出结果:17:25:30
4、UTC_TIMESTAMP(): 返回当前的UTC日期和时间
该函数返回当前系统时间的日期和时间部分,使用协调世界时 (UTC) 表示。它不需要任何参数。
用法:SELECT UTC_TIMESTAMP();
输出结果:2022-07-12 17:25:30