1、NOW() :返回当前日期时间
2、CURDATE() :返回当前的日期
3、CURTIME() :返回当前的时间
SELECT NOW(),CURDATE(),CURTIME()
4、DATE(日期表达式) :只取前面的日期部分
例:
SELECT DATE("2022-11-29 15:56:10")或
SELECT DATE("2022/11/29 15:56:10")
结果均为: 2022-11-29
SELECT DATE(NOW()) :结果为现在时间的日期部分。
5、TIME(日期表达式) :只取后面的时间部分
SELECT TIME("2022-11-29 15:56:10")
结果为:15:56:10
6、将日期转为指定的格式的字符串:date_format(date, format)
注:date为合法的日期表达式,format为格式。
select date_format(now(),'%Y-%m-%d %H:%i:%S');
结果:2022-11-29 16:39:13
select date_format(now(),'%Y-%m-%d');
结果:2022-11-29
select
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'),
DATE_FORMAT(NOW(),'%m-%d-%Y'),
DATE_FORMAT(NOW(),'%d %b %y'),
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
结果为
Nov 04 2008 11:45 PM
11-04-2008
04 Nov 08
04 Nov 2008 11:45:34:243
7、字符串转日期 :str_to_date(str,format)
注:str为日期格式的字符串,format格式必须和str的格式相同,否则返回空
select str_to_date('2022-11-29', '%Y-%m-%d %H:%i:%S');
结果: 2022-11-29 00:00:00
select str_to_date('20221129', '%Y%m%d');
结果: 2022-11-29
8、日期转时间戳:unix_timestamp(date)
select unix_timestamp(now())
结果:1669711707
9、时间戳转日期:from_unixtime(time-stamp);
select from_unixtime(1669711707)
结果:2022-11-29 16:48:27
10、时间戳转字符串:from_unixtime(time-stamp,format);
select from_unixtime(1669711707,'%Y、%m、%d %H:%i:%S');
结果:2022、11、29 16:48:27
11、EXTRACT(unit FROM date) 函数用于返回日期/时间的单独部分,比如只返回年、月、日、小时、分钟等等。
date 参数是合法的日期表达式。unit 参数是要取的部分:
SELECT extract( YEAR_MONTH FROM NOW() )
结果为:202211
unit 参数可以是下列的值:
Unit 值 | 含义 |
---|---|
MICROSECOND | 微妙 |
SECOND | 秒 |
MINUTE | 分钟 |
HOUR | 小时 |
DAY | 日 |
WEEK | 这一年中第几个星期(查询结果加一为正确星期数) |
MONTH | 月份 |
QUARTER | 第几季度 |
YEAR | 年份 |
YEAR_MONTH | 取年份和月份 |
SECOND_MICROSECOND | 只取秒数和微妙数 |
MINUTE_MICROSECOND | 只取秒数和微妙数 |
MINUTE_SECOND | 只取分钟、秒数和微妙数 |
HOUR_MICROSECOND | 取小时、分钟、秒数和微妙数 |
HOUR_SECOND | 取小时、分钟、秒数 |
HOUR_MINUTE | 取小时、分钟 |
DAY_MICROSECOND | |
DAY_SECOND | |
DAY_MINUTE | |
DAY_HOUR |
12、DATE_ADD()或ADDDATE(): 向日期添加指定的时间间隔。
用法:DATE_ADD(date,INTERVAL number type)
date是日期表达式,INTERVAL是固定单词, number是希望添加的时间间隔(数字),type 参数参照11例的unit取值表
DATE_ADD()和ADDDATE()返回对date操作的结果;date的格式可以是“15-12-31”,可以是“15-12-31 23:59:59”,也可以是“2015-12-31 23:59:59”,如果参数date是date格式,则返回date格式结果,如果参数date是datetime格式,则返回datetime格式结果
//此时间点再加两个月
SELECT DATE_ADD('2022-11-30 13:32:37',INTERVAL 2 MONTH)
结果为; 2023-01-30 13:32:37
13、DATE_SUB()或SUBDATE(): 从日期减去指定的时间间隔。(与12类似,一个减、一个加)
用法:DATE_SUB(date,INTERVAL number type)
date是日期表达式,INTERVAL是固定单词, number 是希望添加的时间间隔(数字),type 参数参照11例的unit取值表
//在此时间点减两天
SELECT DATE_SUB('2022-11-30 13:32:37',INTERVAL 2 DAY )
结果为; 2022-11-28 13:32:37
14、DATEDIFF() 函数返回两个日期之间的天数。
用法:DATEDIFF(date1,date2)
date1 和 date2 参数是合法的日期或日期/时间表达式。
注:只有值的日期部分参与计算。
SELECT DATEDIFF('2022-11-30','2022-11-28')
结果为: 2
SELECT DATEDIFF('2022-11-30','2021-11-30')
结果为:365
SELECT DATEDIFF('2022-11-25','2022-11-30')
结果为:-5
15、DAYOFWEEK(date):查此日期在一周中的第几天(结果减一为正确数值)
16、WEEKDAY(date):查此日期在一周中的第几天(结果加一为正确数值)
17、DAYOFMONTH(date):查此日期在一月中是第几天
18、DAYOFMONTH(date):查此日期在一年中是第几天
19、MONTH(date):查此日期是一年中的第几月份
20、DAYNAME(date):查此日期在一周中的第几天(正常,英文显示,如Friday)
21、MONTHNAME(date):查此日期是一年中的第几月份(正常,英文显示,如November)
22、QUARTER(date):查此日期是一年中的第几季度(12月为第4季度,1月为第一季度)
23、WEEK(date,index):查此日期是一年中第几个星期(可能会少一)
24、YEAR(date):要注意的是:如果年份只有两位数,那么自动补全的机制是以默认时间1970.01.01为界限的,>= 70 的补全 19
25、HOUR(time):返回该date或者time的hour值,值范围(0-23)
26、MINUTE(time):返回该time的minute值,值范围(0-59)
27、SECOND(time)返回该time的minute值,值范围(0-59)
28、PERIOD_ADD(month,add):该函数返回对month月份做增减的操作结果,month的格式为yyMM或者yyyyMM,返回的都是yyyyMM格式的结果,add可以传负值
SELECT PERIOD_ADD('202211',2)或SELECT PERIOD_ADD(202211,2)
结果为 202301
29、PERIOD_DIFF(monthStart,monthEnd):该函数返回monthStart – monthEnd的间隔月数
30、TO_DAYS(date):返回西元0年至日期date是总共多少天
31、FROM_DAYS(date):返回西元0年至今多少天的DATE值
32、UNIX_TIMESTAMP(date):获取时间戳
33、SEC_TO_TIME(seconds):把秒数转化成时间
34、TIME_TO_SEC(time):把时间转化成秒数
35、ADDTIME(time,times):把times加到time上
36、CONVERT_TZ(date,from_tz ,to_tz ):转换时区
SELECT CONVERT_TZ('2020-11-30 6:00:00', '+00:00', '+08:00')
结果为:2020-11-30 14:00:00
37、LAST_DAY(date):获取date当月最后一天的日期
38、MAKEDATE(year ,dayofyear ):根据参数(年份,第多少天)获取日期
39、MAKETIME(hour ,minute ,second ):根据参数(时,分,秒)获取时间
40、YEARWEEK(date):获取日期的年和周
41、WEEKOFYEAR(date):获取当日是当年的第几周