一、having与where的区别:
having子句与where都是设定条件筛选的语句,有相似之处也有区别。
having:可以用的前提是语句前面已经筛选出相对应的字段
where:从数据表中的字段直接进行的筛选
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。where 后不能跟聚合函数
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。having后可以使用聚合函数
误区:不要错误的认为having和group by 必须配合使用
二、时间日期函数
注:year(curdate()) 当前年份
1、可以获取指定的部分,年、月、日、小时、分钟、秒
select year(NOW()) 现在,year('1998-09-24') 过去;
select month(now()) 月,monthname(now()) 月名;
day、hour、minute、second一样,我就不写啦~
2、str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put;
3、date_format 将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;