在我们日常开发中,在很多情况下都会使用到很多与时间相关的sql,包括但不限于本日本周本月本年近周近月近年等常见的sql,对于这些常见的计算逻辑,本文进行了及其详细的整理与归纳,有需要的小伙伴可以自行获取与学习~
ㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
SELECT * FROM 表名 WHERE
DAYOFYEAR( date_format( 时间字段, '%Y-%m-%d' ) ) = DAYOFYEAR( ( SELECT max( 时间字段 ) FROM 表名 ) ) - 1
SELECT * FROM 表名 WHERE
YEARWEEK( date_format( 时间字段名, '%Y-%m-%d' ) ) = YEARWEEK( (SELECT max( 时间字段名 ) FROM 表名) )
###########
SELECT * FROM 表名 WHERE
YEARWEEK(date_format( 时间字段名 ,'%Y-%m-%d')) = YEARWEEK(now())
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段,'%Y-%m-%d'),1) = YEARWEEK(now(),7);
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段,'%Y-%m-%d'),1) = YEARWEEK((SELECT max( 时间字段名 ) FROM 表名),7);
SELECT * FROM 表名 WHERE
YEARWEEK(date_format( 时间字段名, '%Y-%m-%d' ) ) = YEARWEEK( (SELECT max( 时间字段名 ) FROM 表名) )-1
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名 , '%Y-%m' ) =DATE_FORMAT( CURDATE( ) , '%Y-%m' )
#########
SELECT * FROM 表名 WHERE DATE_FORMAT( wfsj, '%Y-%m' ) = DATE_FORMAT( ( SELECT max( 时间字段名 ) FROM 表名 ), '%Y-%m' )
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y-%m' ) , date_format( 时间字段名, '%Y-%m' ) ) =1
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y' ) = DATE_FORMAT( ( SELECT max( 时间字段名 ) FROM 表名 ), '%Y' )
select * from 表名 where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
select * from 表名 where 时间字段名 between date_sub(now(),interval xx month) and now();
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <=date(时间字段名)
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <=date(时间字段名)
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <=date(时间字段名)
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 12 MONTH) <=date(时间字段名)
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 1 YEAR) <=date(时间字段名)
熟练使用UNION字段,对两个sql语句进行并集
SELECT
'0-4时' AS '时间',
COUNT(*) AS '数量'
FROM 表名
WHERE
DATE_FORMAT( 时间字段, '%H' ) >= 0 AND DATE_FORMAT( 时间字段, '%H' ) < 4
UNION
SELECT
'4-8时' AS '时间',
COUNT(*) AS '数量'
FROM 表名
WHERE
DATE_FORMAT( 时间字段, '%H' ) >= 4 AND DATE_FORMAT( 时间字段, '%H' ) < 8
UNION
SELECT
'8-12时' AS '时间',
COUNT(*) AS '数量'
FROM 表名
WHERE
DATE_FORMAT( 时间字段, '%H' ) >= 8 AND DATE_FORMAT( 时间字段, '%H' ) < 12
UNION
SELECT
'12-16时' AS '时间',
COUNT(*) AS '数量'
FROM 表名
WHERE
DATE_FORMAT( 时间字段, '%H' ) >= 12 AND DATE_FORMAT( 时间字段, '%H' ) < 16
UNION
SELECT
'16-20时' AS '时间',
COUNT(*) AS '数量'
FROM 表名
WHERE
DATE_FORMAT( 时间字段, '%H' ) >= 16 AND DATE_FORMAT( 时间字段, '%H' ) < 20
UNION
SELECT
'20-24时' AS '时间',
COUNT(*) AS '数量'
FROM 表名
WHERE
DATE_FORMAT( 时间字段, '%H' ) >= 20 AND DATE_FORMAT( 时间字段, '%H' ) < 24