#时间日期函数
1.获取当前日期函数和当前时间函数
格式:CURDATE()和CURRENT_DATE()
作用:获取当前日期函数,返回格式根据函数在字符串或数字语境中决定,分别为"YYYY-MM-DD"或YYYYMMDD
格式:CURTIME()CURRENT_TIME()
作用:获取当前时间,返回格式根据函数在字符串或是数字语境中决定,分别为"HH:MM:SS"或HHMMSS
2.获取当前日期和时间函数
格式:CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()
作用:返回当前日期和时间值,返回格式根据函数在字符串或是数字语境中决定,分别为"YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS"
3.UNIX时间戳函数
格式:UNIX_TIMESTAMP(date)
作用:无参数调用,返回一个Unix时间戳(1970-01-01 00:00:00之后的秒数)作为无符号整数,若用date调用,会将参数值以(1970-01-01 00:00:00之后的秒数)形式返回
格式:FROM_UNIXTIME(date),
作用:把unix时间戳转换为普通格式的时间
4.返回UTC日期函数和返回UTC时间函数
格式:UTC_DATE()
作用:返回当前UTC日期值,格式为YYYY-MM-DD或YYYYMMDD
格式:UTC_TIME()
作用:返回当前UTC时间值,格式'HH:MM:SS'或HHMMSSS
5.获取月份的函数
格式:MONTH(date)
作用:返回date对应的月份,范围[1,12]
格式:MONTHNAME(date)
作用:返回日期对应月份的英文全名
6.获取星期函数
格式:DAYNAMEd(d)
作用:返回d对应的工作日的英文名称
格式:DAYOFWEEK(d)
作用:返回d对应一周的索引,1<==>周日,2<==>周一,7<==>周六
格式:WEEKDAY(d)
作用:返回d对应的工作日索引,0<==>周一,6<==>周日
7.获取星期数
格式:WEEK(d,x)
作用:计算日期d是一年中的第几周,x为非必须的参数,默认为0
格式:WEEKOFYEAR(d)<==>WEEK(d,3)
作用:计算某天位于一年中的第几周,范围为1~53
8.获取天数
格式:DAYOFYEAR(d)
作用:返回d是一年中的第几天,范围1~366
格式:DAYOFMONTH(d)
作用:返回d是一个月中的第几天,范围1~31
9.获取年份、季度、小时、分钟和秒钟函数
格式:YEAR(date)
作用:返回date对应的年份,范围1970~2069
格式:QUARTER(date)
作用:返回date对应的一年中的季度值,范围1~4
格式:MINUTE(time)
作用:返回time对应的分钟数,范围数0~59
格式:SECOND()
作用:返回指定时间对应的秒值
10.获取日期指定值的函数
格式:EXTRACT(type FROM date)
作用:从日期中提取指定类型的数值,
type = YEAR 返回年值
= YEAR_MONTH 返回年月
= DAY_MINUTE 返回日、小时和分钟
11.时间和秒钟转换
格式:TIME_TO_SEC(time)
作用:返回已转化为秒的time参数,转换公式为:小时*3600+分钟*60+秒
格式:SEC_TO_TIME(seconds)
作用:返回被转换为小时、分钟和秒数的seconds参数值,格式为HH:MM:SS或HHMMSS
12.计算日期和时间的函数
DATE_ADD(date,INTERVAL expr type)和DATE_SUB(date,INTERVAL expr type)
date为一个DATETIME或DATE值,指定起始时间
expr是一个表达式,指定从起始日期添加或减去的时间间隔值,是一个字符串,对于负值的时间间隔。可以以一个符号‘-’开头
type:关键词,指示表达式被解释的方式
type和expr参数关系
type值 预期expr格式
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'
MINUTE_SECOND 'MINUTES.SECONDS'
HOUR_MICROSECOND 'HOURS.MICROSECOND'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
DAY_MICROSECOND 'DAYS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'
格式:DATE_ADD(date,INTERVAL expr type)ADDDATE(date,INTERVAL expr type)
作用:执行日期加运算
eg.
mysql> select addtime('2000-12-30 23:59:59','1:1:1');
+----------------------------------------+
| addtime('2000-12-30 23:59:59','1:1:1') |
+----------------------------------------+
| 2000-12-31 01:01:00 |
+----------------------------------------+
格式:DATE_SUB(date,INTERVAL expr type)SUBDATE(date,INTERVAL expr type)
作用:执行日期减运算
eg.
mysql> select subtime('2000-12-30 23:59:59','1:1:1');
+----------------------------------------+
| subtime('2000-12-30 23:59:59','1:1:1') |
+----------------------------------------+
| 2000-12-30 22:58:58 |
+----------------------------------------+
格式:DATEDIFF(date1,date2)
作用:返回起始时间date1和date2之间的天数
eg.
mysql> select datediff('2010-12-31 23:59:59','2010-12-30');
+----------------------------------------------+
| datediff('2010-12-31 23:59:59','2010-12-30') |
+----------------------------------------------+
| 1 |
+----------------------------------------------+
mysql> select datediff('2010-12-31 23:59:59','2011-01-01');
+----------------------------------------------+
| datediff('2010-12-31 23:59:59','2011-01-01') |
+----------------------------------------------+
| -1 |
+----------------------------------------------+
13.将日期和时间格式化
格式:DATE_FORMAT(date,format)
作用:根据format指定的格式显示date值
格式:TIME_FORMAT(time,format)
作用:根据format字符串安排time值的格式,format字符串可能仅会处理包含小时、分钟和秒的格式说明符,其他说明符产生一个NULL值或0
format格式
说明符 说明
%a 工作日的缩写名称(Sum...Sat)
%b 月份的缩写名称(Jan...Dec)
%c 月份数字形式(0...12)
%D 带有后缀的该月日期(0th,1st..)
%d 该月日期,数字形式(00...31)
%e 该月日期,数字形式(0...31)
%f 微妙(000000...999999)
%H 以2位数显示24小时(00...23)
%h,%I 以2位数显示12小时(01...12)
%i 分钟,数字形式(00...59)
%j 一年中的天数(001...366)
%k 以24(0...23)小时表示时间
%l 以12(1...12)小时表示时间
%M 月份名称(January...December)
%m 月份,数字形式(00...12)
%p 上午(AM)或下午(PM)
%r 时间,12小时制(小时 hh:分钟mm:秒数ss)
%S,%s 以2位数表示秒(00...59)
%T 时间,24小时制
%U 周(00...53),周日为每周的第一天
%u 周(00...53),周一为每周的第一天
%V 周(01...53),周日为每周的第一天,和%X同时使用
%v 周(01...53),周一为每周的第一天,和%x同时使用
%W 工作日名称(周日...周六)
%X 该周的年份,周日为每周的第一天,数字形式,4位数;和%V同时使用
%x 该周的年份,周一为每周的第一天,数字形式,4位数,和%v同时使用
%Y 4位数表示年份
%y 2位数表示年份
%% '%'文字字符
格式:GET_ROEMAT(val_type,format_type)
作用:返回日期时间字符串的显示格式
val_type 表示日期数据类型,有DATE、DATETIME和TIME
format_type 格式化显示类型,有EUR、INTERVAL、ISO、JIS、USA
返回的格式字符串
值类型 格式化类型 显示格式字符串
DATE EUR %d.%m,%Y
DATE INTERVAL %Y%m%d
DATE ISO %Y-%m-%d
DATE JIS %y-%m-%d
DATE USA %m.%d.%Y
TIME EUR %H.%i.%s
TIME INTERVAL %H%i%s
TIME ISO %H:%i:%s
TIME JIS %H:%i:%s
TIME USA %h:%i:%s %p
DATETIME EUR %Y-%m-%d %H.%i.%s
DATETIME INTERVAL %Y%m%d%H%i%s
DATETIME ISO %Y-%m-%d %H:%i:%s
DATETIME JIS %Y-%m-%d %H:%i:%s
DATETIME USA %Y-%m-%d %H.%i.%s