php中的mktime函數按時段查詢,其實除了這種解決方案以外,在MySql中也有專門針對日期和時間的函數,包括DATE()、DATE_ADD()、DATE_SUB()、DATE_FORMAT()等等。
| 代碼如下 |
複製代碼 |
最近三個月內的訂單情況,SQL語句如下: $sql=”SELECT * FROM shopping_order WHERE dtTime>=DATE_SUB(NOW(), INTERVAL 3 MONTH)”; 如果是查詢最近15天內的訂單,則SQL語句如下: $sql=”SELECT * FROM shopping_order WHERE dtTime>=DATE_SUB(NOW(), INTERVAL 15 DAY)”; |
mktime函數
| 代碼如下 |
複製代碼 |
函數來查詢下最近三個月內的訂單情況,SQL語句如下: $bgdte=date(”Y-m-d H:i:s”,mktime(date(’H'),date(’i'),date(’s’),date(’m')-3,date(’d'),date(’Y'))); $sql=”SELECT * FROM shopping_order WHERE dtTime>=’”.$bgdte.”‘”; 如果是查詢最近15天內的訂單,則SQL語句如下: $bgdte=date(”Y-m-d H:i:s”,mktime(date(’H'),date(’i'),date(’s’),date(’m'),date(’d')-15,date(’Y'))); $sql=”SELECT * FROM shopping_order WHERE dtTime>=’”.$bgdte.”‘”; |
sql按年月分組和按月分組查詢語句
| 代碼如下 |
複製代碼 |
按月分組: select month(FROM_UNIXTIME(time)) from table_name group by month(FROM_UNIXTIME(time)) 按年月分組: select DATE_FORMAT(FROM_UNIXTIME(time),"%Y-%m") from tcm_fund_list group by DATE_FORMAT(FROM_UNIXTIME(time),"%Y-%m") 其中time是整數如:1159718400 代表2006-10-02 |
查詢今天、昨天、7天、近30天、本月、上一月 資料
| 代碼如下 |
複製代碼 |
今天 select * from 表名 where to_days(時間欄位名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 時間欄位名) <= 1 7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(時間欄位名) 近30天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(時間欄位名) 本月 SELECT * FROM 表名 WHERE DATE_FORMAT( 時間欄位名, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ ) 上一月 SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , ‘%Y%m’ ) , date_format( 時間欄位名, ‘%Y%m’ ) ) =1 |