在工作业务中常会使用mysql的日期函数,下面做一下关于这方面的sql整理:
1970-01-01 00:00:00
到当前时间的秒数差(时间戳)1970-01-01 00:00:00
到指定时间的秒数差(时间戳)补充: 字符串截取函数
exa
, 从最左边开始截取com
, 从最右边开始截取mple.com
,从第4个字符位置开始取,索引为1开始mp
,从第四个字符位置开始取2个字符.com
,从右边开始数第4个字符位置开始取.c
,从右边开始数第4个字符位置开始取2个www.example
, 截取第二个 ‘.’ 之前的所有字符example.com
, 截取倒数第二个 ‘.’ 之后的所有字符www.example.com
, 没有查找到指定的值就返回整个字符串查询2019年每天有多少条记录:
select date_format(时间字段,'%Y-%m-%d') days,count(*) from 表名 where date_format(时间字段,'%Y')='2019' group by days
--或
select count(*),DATE(时间字段名) from 表名 where YEAR(时间字段名)='2019' group by DAY(时间字段名)
查询8月份每周有多少条记录:
select date_format(时间字段,'%Y%u') weeks,count(*) from 表名 where date_format(时间字段,'%m')='08' group by weeks
--或
select count(*),WEEK(时间字段名) from 表名 where MONTH(时间字段名)='8' group by WEEK(时间字段名)
查询2019年周一到周五每天总共有多少条记录:
select count(*),DAYNAME(时间字段名) from 表名 where YEAR(时间字段名)='2019' group by DAYNAME(时间字段名)
查询本周有多少条记录:
select count(*) from 表名 where MONTH(时间字段名) = MONTH(CURDATE()) and WEEK(时间字段名) = WEEK(CURDATE())
查询2019年每月有多少条记录:
select date_format(时间字段,'%Y%m') months,count(*) from 表名 where date_format(时间字段,'%Y')='2019' group by months
--或
select count(*),MONTH(时间字段名) from 表名 where YEAR(时间字段名)='2019' group by MONTH(时间字段名)
查询本月有多少条记录:
select count(*) from 表名 where MONTH(时间字段名)=MONTH(CURDATE()) and YEAR(时间字段名) = YEAR(CURDATE())
查询2019年每季度有多少条记录:
select count(*), concat(year(时间字段),floor((date_format(时间字段, '%m')+2)/3)) quarters from 表名 group by quarters
--或
select count(*),QUARTER(时间字段名) from 表名 where YEAR(时间字段名)='2019' group by QUARTER(时间字段名)
查询每年有多少条记录:
select date_format(时间字段, '%Y') years,count(*) from 表名 group by years
--或
select count(*),YEAR(时间字段名) from 表名 group by YEAR(时间字段名)
查询当天的所有记录:
select * from 表名 where date(时间字段名) = date(now())
--或
select * from 表名 where to_days(时间字段) = to_days(now())
查询n天内所有记录:
select * from 表名 where to_days(now()) - to_days(时间字段名) <= n
查询一周内的所有记录:
select * from 表名 where date_sub(curdate(), interval 7 day) <= date(时间字段名)
查询一个月内的所有记录:
select * from 表名 where date_sub(curdate(), interval 1 month) <= date(时间字段名)
查询’08-06’到’12-12’时间端内所有记录:
select * from 表名 where date_format(时间字段名,'%m-%d') >= '08-06' and date_format(时间字段名,'%m-%d') <= '12-12'
参考链接: