MySQL语句查询近年、月、日、小时的数据

数据库表结构如图:

表数据如下:

#近多少(7)天的数据(按日来算,不算小时分)
#SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
SELECT * FROM `test` WHERE DATE_SUB(CURDATE(), INTERVAL 3 DAY) <= DATE(ntime)

#本月数据
#SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
SELECT * FROM `test` WHERE DATE_FORMAT( ntime, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )


#当天的数据
#SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW())
SELECT * FROM test WHERE TO_DAYS(ntime) = TO_DAYS(NOW())


#查询几(十)小时前数据
#SELECT * FROM 表名 WHERE 时间字段名>DATE_ADD(NOW(),INTERVAL-10 HOUR)
SELECT * FROM test WHERE nTime>DATE_ADD(NOW(),INTERVAL-10 HOUR)

#查询上几(二)月数据,0代表本季度,1代表上一季度
#SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =2
SELECT * FROM `test` WHERE PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( ntime, '%Y%m' ) ) =0

#查询上(几)季度数据`waterregion``log_watermeter`,0代表本季度,1代表上一季度
#SELECT * FROM 表名 WHERE QUARTER(时间字段名)=QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER))
SELECT * FROM `test` WHERE QUARTER(ntime)=QUARTER(DATE_SUB(NOW(),INTERVAL 0 QUARTER))

#查询上(几)年度数据,0代表本年度,1代表上一年度
#SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR))
SELECT * FROM `test` WHERE YEAR(ntime)=YEAR(DATE_SUB(NOW(),INTERVAL 2 YEAR))

#返回 date 是一年中的第几天,范围为 1366
#DAYOFYEAR(date)
SELECT DAYOFYEAR('2019-03-25 10:45:03')




#返回 date 的年份,范围为 10009999
#YEAR(date)
SELECT YEAR('2019-03-25 10:45:03')

#返回 date 中的月份,范围为 112
#MONTH(date)
SELECT MONTH('2019-03-25 10:45:03')

#返回 date 是一月中的第几天,范围为 131
#DAYOFMONTH(date) 
SELECT DAYOFMONTH('2019-03-25 10:45:03')

#返回 time 的小时值,范围为 023: 
#HOUR(time) 
SELECT HOUR('2019-03-25 10:45:03'); 

#返回 time 的分钟值,范围为 059:
#MINUTE(time) 
SELECT MINUTE('2019-03-25 10:45:03'); 

#返回 time 的秒值,范围为 059:
#SECOND(time)  
SELECT SECOND('2019-03-25 10:45:03'); 
原文地址:https://www.cnblogs.com/Moming0/p/10593879.html