目录
- 1、计算时间差(timestampdiff())
-
- 1.1 引言
- 1.2 使用说明
- 1.3 使用示例
- 2、控制时间输出格式(date_format())
-
- 2.1 使用说明
- 2.2 使用示例
- 3、计算每个月的天数(day()& last_day())
-
- 3.1 应用场景
- 3.2 计算方法
-
- 3.2.1 计算某个时间的天数
- 3.2.2 计算某个月的天数
1、计算时间差(timestampdiff())
1.1 引言
在实际的工作中经常需要计算两个时间点之间的差值来作为筛选控制条件,mysql中的timestampdiff()函数很好的解决了这个需求,下面介绍该函数的使用方法。
1.2 使用说明
格式:TIMESTAMPDIFF(unit,begin,end);
上面式子中begin和end是DATE或DATETIME表达式。
TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end可以是DATETIME值。 如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”的DATETIME值。
unit的有以下选择,根据选择返回计算结果:
MICROSECOND 微秒
SECOND 秒
MINUTE 分钟
HOUR 小时
DAY 天
WEEK 周
MONTH 月份
QUARTER
YEAR 年份
1.3 使用示例
SELECTTIMESTAMPDIFF( MONTH, '2020-01-01', '2022-06-01' ) result;
结果
更改unit可以计算不同的时间尺度差值。
2、控制时间输出格式(date_format())
2.1 使用说明
date_format(date, format)
date 参数是合法的日期,format 规定日期/时间的输出格式。
可以使用的输出格式
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时(00-23) |
%h | 小时(01-12) |
%I | 小时(01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天(001-366) |
%k | 小时(0-23) |
%l | 小时(1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时(hh:mm:ss) |
%U | 周(00-53)星期日是一周的第一天 |
%u | 周(00-53)星期一是一周的第一天 |
%V | 周(01-53)星期日是一周的第一天,与 %X 使用 |
%v | 周(01-53)星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天(0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
2.2 使用示例
代码:
date_format(now(),'%m-%d-%Y')
输出:
01-10-2022
3、计算每个月的天数(day()& last_day())
3.1 应用场景
已知某个时间,需要计算该月的总天数,以便于计算一些月平均值。
3.2 计算方法
3.2.1 计算某个时间的天数
/*DAY函数返回给定日期的月份的日期部分*/
day(date)
3.2.2 计算某个月的天数
/*LAST_DAY函数返回某月的最后一天,例如2022-01-31,DAY函数返回最后一天的那个月的日期,也就是该月份的天数。*/
day(last_day(date))