date_format :格式化日期 日期函数

发布于:2023-01-04 ⋅ 阅读:(380) ⋅ 点赞:(0)

select

date_format(submit_time,'%Y%m') as month,

round(count(distinct uid,date_format(submit_time,'%Y%m%d'))/count(distinct uid),2) as avg_active_days,        //月活跃天数除以人数   等于平均活跃天数

count(distinct uid) as mau

from exam_record

where submit_time is not null and year(submit_time) = 2021

group by date_format(submit_time,'%Y%m')

exam_record:表名

submit_time:时间字段

下划线处 : 当且仅当使用distinct对 uid,date_format(submit_time, '%y%m%d')这两个字段筛选出的结果集进行去重后可以使用。 (只针对于MySQL,如果是orcle会报错)

(1002,2021-07-02),(1002,2021-07-05)和(1001,2021-07-02),所以输出结果为3

date_format函数:

date_format(submit_time,'%Y%m') 结果为 : 202107

其中 '%Y%m' ,Y和m,大写或者小写代表的是不同的含义

链接:计算用户8月每天的练题数量__牛客网
来源:牛客网
 

日期函数

DAYOFWEEK(date)

返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

复制代码

1

select DAYOFWEEK('1998-02-03')

-> 3

WEEKDAY(date)

返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

复制代码

1

mysql> select WEEKDAY('1997-10-04 22:23:00');

-> 5

DAYOFMONTH(date)

返回date的月份中日期,在1到31范围内。

复制代码

1

mysql> select DAYOFMONTH('1998-02-03');

-> 3

DAYOFYEAR(date)

返回date在一年中的日数, 在1到366范围内。

复制代码

1

mysql> select DAYOFYEAR('1998-02-03');

-> 34

MONTH(date)

返回date的月份,范围1到12。

复制代码

1

mysql> select MONTH('1998-02-03');

-> 2

DAYNAME(date)

返回date的星期名字。

复制代码

1

mysql> select DAYNAME("1998-02-05");

-> 'Thursday'

MONTHNAME(date)

返回date的月份名字。

复制代码

1

mysql> select MONTHNAME("1998-02-05");

-> 'February'

QUARTER(date)

返回date一年中的季度,范围1到4。

复制代码

1

mysql> select QUARTER('98-04-01');

-> 2

WEEK(date)

对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。

复制代码

1

mysql> select WEEK('1998-02-20');

-> 7

WEEK(date,first)

2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。
如果第二个参数是0,星期从星期天开始,
如果第二个参数是1,从星期一开始。

复制代码

1

mysql> select WEEK('1998-02-20',0);

-> 7

复制代码

1

mysql> select WEEK('1998-02-20',1);

-> 8

YEAR(date)

返回date的年份,范围在1000到9999。

复制代码

1

mysql> select YEAR('98-02-03');

-> 1998

HOUR(time)

返回time的小时,范围是0到23。

复制代码

1

mysql> select HOUR('10:05:03');

-> 10

MINUTE(time)

返回time的分钟,范围是0到59。

复制代码

1

mysql> select MINUTE('98-02-03 10:05:03');

-> 5

SECOND(time)

回来time的秒数,范围是0到59。

复制代码

1

mysql> select SECOND('10:05:03');

-> 3

PERIOD_ADD(P,N)

增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。

复制代码

1

mysql> select PERIOD_ADD(9801,2);

-> 199803

PERIOD_DIFF(P1,P2)

返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

复制代码

1

mysql> select PERIOD_DIFF(9802,199703);

-> 11

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到