轉自:https://blog.csdn.net/lzxlfly/article/details/97577575?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
最近常用到mysql的datetime類型的日期范圍搜索,總結有以下幾種方式可以,可以查詢精確到秒之間的記錄。字符串日期可以直接和datetime類型之間比較,無需轉換,Mysql會將字符串類型日期轉換成長整型數字進行比較,當然你也可以轉換為同一類型后再比較
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'),不走索引
舉例說明
如下表,查詢,create_time為datetime類型,查詢兩個日期范圍內的數據。
方式一、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')