- 当前日期:使用`SELECT * FROM 表名 WHERE to_days(时间字段名) = to_days(now());`获取当天数据,或者`DATE_SUB(CURDATE(), INTERVAL 7 DAY)
mysql 各种按时间查询
MySQL中,针对不同时间范围的查询语句十分实用。以下是根据时间段进行筛选数据的一些常见方法:
- 当前日期:使用`SELECT * FROM 表名 WHERE to_days(时间字段名) = to_days(now());`获取当天数据,或者`DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)`获取过去7天内的记录。
- 近30天:`SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)`。
- 本月数据:`SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')`,上月则是`PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) = 1`。
- 季度查询:`SELECT * FROM `ht_invoice_information` WHERE QUARTER(create_date) = QUARTER(now())`(当前季度)和`QUARTER(create_date) = QUARTER(DATE_SUB(now(),interval 1 QUARTER))`(上季度)。
- 年度查询:`SELECT * FROM `ht_invoice_information` WHERE YEAR(create_date) = YEAR(NOW())`(当前年份)和`year(create_date) = year(date_sub(now(),interval 1 year))`(上年份)。
- 周查询:`SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())`(当前周)和`YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now()) - 1`(上周)。
- 月份和6个月查询:`select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')`和`submittime between date_sub(now(),interval 6 month) and now()`。
- 上月数据:`select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')`。
- 更详细的日期范围如年月日或Unix时间戳:`WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now())`,`MONTH (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = MONTH (now())`和`YEAR (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = YEAR (now())`。
最后,还可以根据特定日期范围(如当天)查询特定列:`SELECT date( c_instime ) , curdate() FROM `t_score` WHERE 1 LIMIT 0 , 30`。这些查询语句将帮助你根据时间范围精确筛选所需的数据。2024-08-12