MySQL的日期和时间函数主要用于处理日期时间。
函数 说明
1、CURDATE(),CURRENT_DATE() 返回当前日期(年月日)
SELECT CURDATE() -- 2018-03-05
2、CURTIME(),CURRENT_TIME() 返回当前时间(时分秒)
SELECT CURTIME() -- 15:18:26
3、NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP() 返回当前日期和时间
SELECT NOW() -- 2018-03-05 15:19:23
4、UNIX_TIMESTAMP() 以UNIX时间戳的形式返回当前时间
SELECT UNIX_TIMESTAMP() -- 1520234429
5、UNIX_TIMESTAMP(d) 将时间d以UNIX时间戳的形式返回
SELECT UNIX_TIMESTAMP('2011-11-11 11:11:11') -- 1320981071
6、FROM_UNIXTIME(d) 将UNIX时间戳的时间转换为普通格式的时间
SELECT FROM_UNIXTIME(1320981071) -- 2011-11-11 11:11:11
7、UTC_DATE() 返回UTC日期
SELECT UTC_DATE() -- 2018-03-05
8、UTC_TIME() 返回UTC时间
SELECT UTC_TIME() -- 07:22:57(慢了8小时)
9、MONTH(d) 返回日期d中的月份值,1->12
SELECT MONTH('2011-11-11 11:11:11') -- 11
10、MONTHNAME(d) 返回日期当中的月份名称,如Janyary
SELECT MONTHNAME('2011-11-11 11:11:11') -- November
11、DAYNAME(d) 返回日期d是星期几,如Monday,Tuesday
SELECT DAYNAME('2018-03-05 11:11:11') -- Monday
12、DAYOFWEEK(d) 日期d今天是星期几,1星期日,2星期一
SELECT DAYOFWEEK('2018-03-05 11:11:11') -- 2
13、WEEKDAY(d) 日期d今天是星期几,0表示星期一,1表示星期二
14、WEEK(d),WEEKOFYEAR(d) 计算日期d是本年的第几个星期,范围是0->53
SELECT WEEK('2011-11-11 11:11:11') -- 45
15、DAYOFYEAR(d) 计算日期d是本年的第几天
SELECT DAYOFYEAR('2011-11-11 11:11:11') -- 315
16、DAYOFMONTH(d) 计算日期d是本月的第几天
SELECT DAYOFMONTH('2011-11-11 11:11:11') -- 11
17、QUARTER(d) 返回日期d是第几季节,返回1->4
SELECT QUARTER('2011-11-11 11:11:11') -- 4
18、HOUR(t) 返回t中的小时值
SELECT HOUR('1:2:3') -- 1
19、MINUTE(t) 返回t中的分钟值
SELECT MINUTE('1:2:3') -- 2
20、SECOND(t) 返回t中的秒钟值
SELECT SECOND('1:2:3') --3
21、EXTRACT(type FROM d) 从日期d中获取指定的值,type指定返回的值
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11') -- 11
SELECT EXTRACT(SECOND FROM '2011-11-11 11:12:13') -- 13
type可取值为:
MICROSECOND
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
22、TIME_TO_SEC(t) 将时间t转换为秒
SELECT TIME_TO_SEC('1:12:00') -- 4320
23、SEC_TO_TIME(s) 将以秒为单位的时间s转换为时分秒的格式
SELECT SEC_TO_TIME(4320) -- 01:12:00
24、TO_DAYS(d) 计算日期d距离0000年1月1日的天数
SELECT TO_DAYS('0001-01-01 01:01:01') -- 366
25、FROM_DAYS(n) 计算从0000年1月1日开始n天后的日期
SELECT FROM_DAYS(1111) -- 0003-01-16
26、DATEDIFF(d1,d2) 计算日期d1->d2之间相隔的天数
SELECT DATEDIFF('2001-01-01','2001-02-02') -- -32
27、ADDDATE(d,n) 计算其实日期d加上n天的日期
28、ADDDATE(d,INTERVAL expr type) 计算起始日期d加上一个时间段后的日期
SELECT ADDDATE('2011-11-11 11:11:11',1) -- 2011-11-12 11:11:11 (默认是天)
SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE) -- 2011-11-11 11:16:11 (TYPE的取值与上面那个列出来的函数类似)
29、DATE_ADD(d,INTERVAL expr type) 同上
30、SUBDATE(d,n) 日期d减去n天后的日期
SELECT SUBDATE('2011-11-11 11:11:11', 1) -- 2011-11-10 11:11:11 (默认是天)
31、SUBDATE(d,INTERVAL expr type) 日期d减去一个时间段后的日期
SELECT SUBDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE) -- 2011-11-11 11:06:11 (TYPE的取值与上面那个列出来的函数类似)
32、ADDTIME(t,n) 时间t加上n秒的时间
SELECT ADDTIME('2011-11-11 11:11:11', 5) -- 2011-11-11 11:11:16 (秒)
33、SUBTIME(t,n) 时间t减去n秒的时间
SELECT SUBTIME('2011-11-11 11:11:11', 5) -- 2011-11-11 11:11:06 (秒)
34、DATE_FORMAT(d,f) 按表达式f的要求显示日期d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r') -- 2011-11-11 11:11:11 AM
35、TIME_FORMAT(t,f) 按表达式f的要求显示时间t
SELECT TIME_FORMAT('11:11:11','%r') --11:11:11 AM
36、GET_FORMAT(type,s) 获得国家地区时间格式函数
select get_format(date,'usa') -- %m.%d.%Y (注意返回的就是这个奇怪的字符串(format字符串))
函数 说明
1、CURDATE(),CURRENT_DATE() 返回当前日期(年月日)
SELECT CURDATE() -- 2018-03-05
2、CURTIME(),CURRENT_TIME() 返回当前时间(时分秒)
SELECT CURTIME() -- 15:18:26
3、NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP() 返回当前日期和时间
SELECT NOW() -- 2018-03-05 15:19:23
4、UNIX_TIMESTAMP() 以UNIX时间戳的形式返回当前时间
SELECT UNIX_TIMESTAMP() -- 1520234429
5、UNIX_TIMESTAMP(d) 将时间d以UNIX时间戳的形式返回
SELECT UNIX_TIMESTAMP('2011-11-11 11:11:11') -- 1320981071
6、FROM_UNIXTIME(d) 将UNIX时间戳的时间转换为普通格式的时间
SELECT FROM_UNIXTIME(1320981071) -- 2011-11-11 11:11:11
7、UTC_DATE() 返回UTC日期
SELECT UTC_DATE() -- 2018-03-05
8、UTC_TIME() 返回UTC时间
SELECT UTC_TIME() -- 07:22:57(慢了8小时)
9、MONTH(d) 返回日期d中的月份值,1->12
SELECT MONTH('2011-11-11 11:11:11') -- 11
10、MONTHNAME(d) 返回日期当中的月份名称,如Janyary
SELECT MONTHNAME('2011-11-11 11:11:11') -- November
11、DAYNAME(d) 返回日期d是星期几,如Monday,Tuesday
SELECT DAYNAME('2018-03-05 11:11:11') -- Monday
12、DAYOFWEEK(d) 日期d今天是星期几,1星期日,2星期一
SELECT DAYOFWEEK('2018-03-05 11:11:11') -- 2
13、WEEKDAY(d) 日期d今天是星期几,0表示星期一,1表示星期二
14、WEEK(d),WEEKOFYEAR(d) 计算日期d是本年的第几个星期,范围是0->53
SELECT WEEK('2011-11-11 11:11:11') -- 45
15、DAYOFYEAR(d) 计算日期d是本年的第几天
SELECT DAYOFYEAR('2011-11-11 11:11:11') -- 315
16、DAYOFMONTH(d) 计算日期d是本月的第几天
SELECT DAYOFMONTH('2011-11-11 11:11:11') -- 11
17、QUARTER(d) 返回日期d是第几季节,返回1->4
SELECT QUARTER('2011-11-11 11:11:11') -- 4
18、HOUR(t) 返回t中的小时值
SELECT HOUR('1:2:3') -- 1
19、MINUTE(t) 返回t中的分钟值
SELECT MINUTE('1:2:3') -- 2
20、SECOND(t) 返回t中的秒钟值
SELECT SECOND('1:2:3') --3
21、EXTRACT(type FROM d) 从日期d中获取指定的值,type指定返回的值
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11') -- 11
SELECT EXTRACT(SECOND FROM '2011-11-11 11:12:13') -- 13
type可取值为:
MICROSECOND
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
22、TIME_TO_SEC(t) 将时间t转换为秒
SELECT TIME_TO_SEC('1:12:00') -- 4320
23、SEC_TO_TIME(s) 将以秒为单位的时间s转换为时分秒的格式
SELECT SEC_TO_TIME(4320) -- 01:12:00
24、TO_DAYS(d) 计算日期d距离0000年1月1日的天数
SELECT TO_DAYS('0001-01-01 01:01:01') -- 366
25、FROM_DAYS(n) 计算从0000年1月1日开始n天后的日期
SELECT FROM_DAYS(1111) -- 0003-01-16
26、DATEDIFF(d1,d2) 计算日期d1->d2之间相隔的天数
SELECT DATEDIFF('2001-01-01','2001-02-02') -- -32
27、ADDDATE(d,n) 计算其实日期d加上n天的日期
28、ADDDATE(d,INTERVAL expr type) 计算起始日期d加上一个时间段后的日期
SELECT ADDDATE('2011-11-11 11:11:11',1) -- 2011-11-12 11:11:11 (默认是天)
SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE) -- 2011-11-11 11:16:11 (TYPE的取值与上面那个列出来的函数类似)
29、DATE_ADD(d,INTERVAL expr type) 同上
30、SUBDATE(d,n) 日期d减去n天后的日期
SELECT SUBDATE('2011-11-11 11:11:11', 1) -- 2011-11-10 11:11:11 (默认是天)
31、SUBDATE(d,INTERVAL expr type) 日期d减去一个时间段后的日期
SELECT SUBDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTE) -- 2011-11-11 11:06:11 (TYPE的取值与上面那个列出来的函数类似)
32、ADDTIME(t,n) 时间t加上n秒的时间
SELECT ADDTIME('2011-11-11 11:11:11', 5) -- 2011-11-11 11:11:16 (秒)
33、SUBTIME(t,n) 时间t减去n秒的时间
SELECT SUBTIME('2011-11-11 11:11:11', 5) -- 2011-11-11 11:11:06 (秒)
34、DATE_FORMAT(d,f) 按表达式f的要求显示日期d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r') -- 2011-11-11 11:11:11 AM
35、TIME_FORMAT(t,f) 按表达式f的要求显示时间t
SELECT TIME_FORMAT('11:11:11','%r') --11:11:11 AM
36、GET_FORMAT(type,s) 获得国家地区时间格式函数
select get_format(date,'usa') -- %m.%d.%Y (注意返回的就是这个奇怪的字符串(format字符串))