查询周起止日期
SELECT
DATE_ADD( '2019-11-12', INTERVAL - WEEKDAY ( '2019-11-12' ) DAY ) week_begin,
DATE_ADD( '2019-11-12', INTERVAL - WEEKDAY ( '2019-11-12' ) + 7 DAY ) week_end
FROM
DUAL
查询月起止日期
SELECT
DATE_ADD( '2019-11-12', INTERVAL - DAY ( '2019-11-12' ) + 1 DAY ) month_begin,
DATE_ADD( LAST_DAY( '2019-11-12' ), INTERVAL + 1 DAY ) month_end
FROM
DUAL
查询年起止日期
SELECT
DATE_ADD( '2019-11-12', INTERVAL - DAYOFYEAR ( '2019-11-12' ) + 1 DAY ) year_begin,
DATE_ADD( DATE_ADD( '2019-11-12', INTERVAL - DAYOFYEAR ( '2019-11-12' ) + 1 DAY ), INTERVAL + 1 YEAR ) year_end
FROM
DUAL
查询当前时间是今年的第几天、周、季
SELECT
DAYOFYEAR ( '20191112' ) 'day',
WEEK ( '20191112', 1 ) week1,
WEEKOFYEAR( '20191112' ) week2,
QUARTER ( '20191112' ) qtr,
floor( substr( '20191112', 5, 2 )/ 3.1 )+ 1 qtr2
FROM
DUAL
起止时间使用
如果查询字段是datetime或者timestamp类型,可以使用UNIX_TIMESTAMP函数进行转换。
例如查询一天的数据(查询周、月、年可以直接用上面的查询替换起止日期)
SELECT
count( 1 )
FROM
xxx
WHERE
UNIX_TIMESTAMP( create_time ) >= UNIX_TIMESTAMP( '2019-11-01' )
AND UNIX_TIMESTAMP( create_time ) <= UNIX_TIMESTAMP('2019-11-02');