mysql 時間范圍


- 查詢今天的數據

select * from `user` where to_days(birthday) = to_days(CURDATE());

-- 查詢昨天的數據

select * from `user` where to_days(CURDATE()) - to_days(birthday)<=1;

-- 查詢最近7天的數據

select * from `user` where birthday > DATE_SUB(CURDATE(),INTERVAL 7 DAY);

-- 查詢最近一個季度的數據

select * from `user` where birthday > DATE_SUB(CURDATE(), INTERVAL 3 MONTH)

-- 最近一年的數據

select * from `user` where birthday > DATE_SUB(CURDATE(), INTERVAL 1 YEAR);

 

-- 本季度的數據

select * from `user` where quarter(birthday) = quarter(CURDATE());

-- 上季度的數據

select * from `user` where quarter(birthday) = quarter(DATE_SUB(CURDATE(), INTERVAL 1 QUARTER));

 

-- 查詢今年的數據

select * from `user` where year(CURDATE()) - year(birthday) = 28 ;

 

-- 查詢第幾月的數據

select * from `user` where month(birthday) = 8 ;

 

-- 查詢某年某月某日的數據

select * from `user` where date_format(birthday,'%Y-%m-%d')='2017-07-07';

 

-- 查詢制定時間段內的數據(只寫到月,會出錯)

select * from `user` where birthday between '1888-5-1 00:00:00' and '2017-9-3 00:00:00';

 

-- 查詢制定時間段內的數據(只寫到月,會出錯)

select * from `user` where birthday > '1989-5-1' and birthday < '2017-5-1';

 

 

mysql日期與字符串轉換函數

字符串轉日期:STR_TO_DATE('2019-07-25 00:00:33', '%Y-%m-%d %H:%i:%s')  ,走索引

日期轉字符串:DATE_FORMAT('2019-07-25 00:00:33', '%Y-%m-%d %H:%i:%s'),不走索引

方式一、between...and(推薦)

SELECT * FROM k_student WHERE create_time  between '2019-07-25 00:00:33' and '2019-07-25 00:54:33'

方式二、大小於號

SELECT * FROM k_student WHERE create_time >= '2019-07-25 00:00:33' AND create_time <= '2019-07-25 00:54:32'

方式三、轉換為UNIX_TIMESTAMP比較,create_time若加了索引,不走索引 

SELECT * FROM k_student WHERE  UNIX_TIMESTAMP(create_time)  between UNIX_TIMESTAMP('2019-07-25 00:00:33') and UNIX_TIMESTAMP('2019-07-25 00:54:33')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM