資料庫查詢與時間有關的一些問題
##查詢最近的一條資訊
SELECT column_name(s) FROM table_name WHERE column_name = pattern ORDER BY create_time DESC LIMIT 1;
在某些情況下,如果明知道查詢結果只有一個,SQL語句中使用LIMIT 1 會提高查詢效率,避免全表掃描。
##查詢今天
SELECT column_name(s) FROM table_name WHERE DATE_FORMAT( create_time,'%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d');
DATE_FORMAT()函式用於以不同的格式顯示日期/時間資料
DATE_FORMAT(date,format)
date引數是合法的日期。format規定日期/時間的輸出格式
NOW()函式返回當前的日期和時間
SELECT column_name(s) FROM table_name WHERE TO_DAYS(create_time) =TO_DAYS(NOW());
SELECT colum_name(s) FROM table_name WHERE DATE(create_time) =DATE(CURDATE());
DATE()提取日期或日期/時間表達式的日期部分
##查詢昨天
SELECT column_name(s) FROM table_name WHERE DATE_FORMAT( create_time,'%Y-%m-%d') = DATE_FORMAT(CURDATE()-1,'%Y-%m-%d');
SELECT column_name(s) FROM table_name WHERE DATE(create_time) =DATE(CURDATE()-1);
##輸出格式:2017-04-14
SELECT CURDATE();
##輸出格式:2017-04-14 13:44:11
SELECT NOW();
##查詢一個星期內的資料
## DATE_SUB(date,INTERVAL expr unit) 從日期減去指定的時間間隔
SELECT column_name(s) FROM table_name WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <=DATE(create_time) ORDER BY create_time DESC;
##查詢一個月內的資料
SELECT column_name(s) FROM table_name WHERE DATE_SUB(CURDATE(),INTERVAL 1 MONTH) <= DATE(create_time) ORDER BY create_time DESC;
##返回date的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的標準
SELECT DAYOFWEEK(create_time) FROM table_name ORDER BY create_time DESC;
##格式化時間
SELECT DATE_FORMAT(create_time,'%Y-%m-%d') FROM table_name ;
##返回當前時間 輸出格式:15:17:51
SELECT CURTIME();
##給日期新增指定的時間間隔 DATE_ADD(date,INTERVAL expr unit)
SELECT column_name(s) FROM table_name WHERE DATE_ADD(create_time,INTERVAL 1 DAY) <= DATE(NOW());
##返回兩個日期之間的天數 DATEDIFF(expr1,expr2)
SELECT column_name(s) FROM table_name WHERE DATEDIFF( NOW(),create_time)=0
=0代表查詢的是當天,=1 查詢的就是昨天……