MySQL

来源:互联网 发布:人物卡通设计软件 编辑:程序博客网 时间:2024/06/16 06:49

该篇总结MySQL 中常用的日期时间函数。

【1】DATE_FORMAT (datetime ,FormatCodes )

示例如下:

SELECT DATE_FORMAT(SYSDATE(),'%W'),DATE_FORMAT(SYSDATE(),'%w'),DATE_FORMAT(SYSDATE(),'%Y-%m-%d');

这里写图片描述

date_format格式参考MySQLdateFormat格式


EXTRACT(unit FROM date):提取日期的指定部分

SELECT EXTRACT(unit FROM date)

示例如下:

SELECT EXTRACT(second FROM SYSDATE()),EXTRACT(minute FROM SYSDATE()),EXTRACT(hour FROM SYSDATE()),EXTRACT(day FROM SYSDATE()),EXTRACT(week FROM SYSDATE()),EXTRACT(month FROM SYSDATE()),EXTRACT(year FROM SYSDATE())

这里写图片描述


【2】DAY

DAY(date) //返回日期的天;DAY() 和DAYOFMONTH()的意义相同。DAYNAME (date) //英文星期DAYOFWEEK (date) //一周中的第几天,1为星期日,范围1-7DAYOFMONTH(date)//一月中的第几天,一号为第一天,范围1-31DAYOFYEAR (date) //一年中的第几天,范围1-366

示例如下:

SELECT DAY(SYSDATE()),DAYNAME(SYSDATE()),DAYOFWEEK(SYSDATE()),DAYOFMONTH(SYSDATE()),DAYOFYEAR(SYSDATE());

这里写图片描述


【2.5】week

WEEKWEEK(date[,mode])

该函数返回date 对应的星期数。WEEK() 的双参数形式允许你指定该星期是否起始于周日或周一, 以及返回值的范围是否为从0 到53 或从1 到53。若 mode参数被省略,则使用default_week_format系统自变量的值(不改变默认为0)。

这里写图片描述

以下为mode的说明:

这里写图片描述


WEEKDAY(date)//返回date (0 = 周一, 1 = 周二, ... 6 = 周日)对应的工作日索引 WEEKOFYEAR(date)//将该日期的阳历周以数字形式返回,范围是从153。它是一个兼容度函数,相当于WEEK(date,3)。

【2.6】year

YEAR(date) 

返回date 对应的年份,范围是从1000到9999。

YEARWEEK(date), YEARWEEK(date,start) 

返回一个日期对应的年或周。start参数的工作同 start参数对 WEEK()的工作相同。结果中的年份可以和该年的第一周和最后一周对应的日期参数有所不同。

这里写图片描述

注意,周数和WEEK()函数都可选参数0或 1。可能会返回的week有所不同,原因是此时 WEEK() 返回给定年份的语境中的周。


【3】CURRENT_X

CURRENT_DATE ( ) //当前日期CURRENT_TIME ( ) //当前时间CURRENT_TIMESTAMP ( ) //当前时间戳NOW ( ) //当前时间

示例如下:

SELECT CURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP(),NOW();

这里写图片描述


【4】日期加减

① 求差:date1-date2(只算日期,不算时间)

DATEDIFF (date1 ,date2 ) //两个日期差

示例如下 :

SELECT DATEDIFF(SYSDATE(),'2017-08-04') ;

这里写图片描述


TIMEDIFF(datetime1,datetime2) : 两个日期时间型相减:

SELECT TIMEDIFF(SYSDATE(),'2017-08-07 20:20:20'),TIMEDIFF('2017-08-07 20:20:20',SYSDATE());

这里写图片描述


② DATE_ADD(date2 , INTERVAL d_value d_type )

在date2中加上日期或时间

SELECT DATE_ADD(SYSDATE(),INTERVAL 3 HOUR)type:可为second,minute,hour,day,week,month and year;

同ADDDATE(date,INTERVAL expr type)。


③ DATE_SUB (date2 , INTERVAL d_value d_type )

在date2上减去一个时间

SELECT DATE_SUB(SYSDATE(),INTERVAL 3 hour);其他同②。

同SUBDATE(date,INTERVAL expr type)。


【5】根据日期判断秒,分,时,天,周,月,年

SECOND(datetime)//返回datetime的秒;MINUTE(datetime)//返回datetime的分钟;HOUR(datetime )//返回datetime的小时;DAY (date) //返回日期的天;WEEK (datetime [,start_of_week ]) //第几周MONTH(datetime)//月份YEAR(datetime)//年份DATE (datetime ) //返回datetime的日期部分;

示例如下 :

SELECT SECOND(SYSDATE()), MINUTE(SYSDATE()),HOUR(SYSDATE()),DAY(SYSDATE()),WEEK(SYSDATE()),MONTH(SYSDATE()),YEAR(SYSDATE())DATE(SYSDATE());

这里写图片描述


【6】时间相加减

将time_interval加到date2

ADDTIME (date2 ,time_interval ) 

示例如下 :

SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');

这里写图片描述


时间相减

SELECT SUBTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');

这里写图片描述


【7】秒数,时间转换

① 秒数转时间

SEC_TO_TIME (seconds )

这里写图片描述


② 时间转秒数

TIME_TO_SEC(time)

这里写图片描述


【8】datetime的微秒部分

MICROSECOND(datetime) //微秒

这里写图片描述


【9】datetime的月的最后日期

即,隶属的月的最后一天是几号。

LAST_DAY(date) //date的月的最后日期

这里写图片描述


【10】month

MONTH(date)//返回date 对应的月份,范围时从 1 到 12。MONTHNAME(date)//返回date 对应月份的全名。

这里写图片描述


【11】日期时间串拼接

MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串MAKETIME (hour ,minute ,second ) //生成时间串

示例如下 :

SELECT MAKEDATE(2017,1),MAKETIME (20,20 ,20); 

这里写图片描述