# 限定条件 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
|