# 限定条件 2021年8月,比如使用特定的取值函数,year(date)=2021,month(date)=8;
#                     例如使用date_formate函数进行转换日期格式
#                     date_formate(date,'%Y-%M')='202108'

select distinct day(date) as day,
count(question_id) as question_cnt
from question_practice_detail
where year(date)=2021 and month(date)=8
group by day;






# 法2:
# 格式1:
#     1、string 需要截取的字符串
#     2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
#     3、b 要截取的字符串的长度

# 格式2:
#     1、string 需要截取的字符串
#     2、a 可以理解为从第a个字符开始截取后面所有的字符串。



SELECT DAY(date) as day,
COUNT(question_id) AS question_cnt
FROM question_practice_detail
WHERE SUBSTR(date,1,7)='2021-08'
group by day

mysql 日期时间常用函数:

1.获取系统时间

1

2

3

4

5

6

#获取当前系统的日期时间

SELECTNOW(); # 2021-12-22 13:50:58

#获取当前系统的日期

SELECTCURDATE(); # 2021-12-22

#获取当前系统的时间

SELECTCURTIME(); # 13:53:11

2. 从日期格式的字符串中提取

#从日期格式的字符串中获取年、月、日、时、分、秒 ,示例字符串:2021-12-22 13:50:58

# 使用函数 extract(type fromdata)

SELECTEXTRACT(YEARFROM'2021-12-22 13:50:58'); # 2021

SELECTEXTRACT(MONTHFROM'2021-12-22 13:50:58'); # 12

SELECTEXTRACT(DAYFROM'2021-12-22 13:50:58'); # 22

SELECTEXTRACT(HOURFROM'2021-12-22 13:50:58'); # 13

SELECTEXTRACT(MINUTEFROM'2021-12-22 13:50:58'); # 50

SELECTEXTRACT(SECONDFROM'2021-12-22 13:50:58'); # 58

3. 日期增加或减少

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#日期增加,使用函数date_add(date,INTERVAL exp type)

#增加1天

SELECTDATE_ADD('2021-12-22 13:50:58', INTERVAL 1 DAY);  # 2021-12-23 13:50:58

#增加1小时

SELECTDATE_ADD('2021-12-22 13:50:58', INTERVAL 1 HOUR);  # 2021-12-23 14:50:58

#日期减少,使用函数date_sub(date,INTERVAL exp type)

# 减少1天

SELECTDATE_SUB('2021-12-01 13:50:58', INTERVAL 1 DAY); # 2021-11-30 13:50:58

#其他间隔

INTERVAL 1 YEAR

INTERVAL 1 MONTH

INTERVAL 1 DAY

INTERVAL 1 HOUR

INTERVAL 1 MINUTE

INTERVAL 1 SECOND

4. 日期格式化

1

2

3

4

#日期格式化,注意mysql中日期时间格式化字符串的写法:'%Y-%m-%d %H:%i:%s'

SELECTDATE_FORMAT('2021-12-01 13:50:58', '%Y/%m/%d %H:%i:%s'); # 2021/12/01 13:50:58

# '%Y%m-%d %H:00:00',取日期和时间的整点数,分钟和秒钟为00

SELECTDATE_FORMAT('2021-12-01 13:50:58', '%Y-%m-%d %H:00:00'); # 2021/12/01 13:00:00