select count(*) from table where buytime>='2011-5-31 00:00:00' and buytime<='2011-6-6 23:59:59' group by itemname
select count(*) from table where buytime>=unix_stamp('2011-5-31 00:00:00') and buytime<=unix_stamp('2011-6-6 23:59:59') group by itemname.
在mysql中有傳統時間函式和unix時間戳的互換函式。unix_timestamp(datetime) 和from_unixtime(unixtime)
之前說過mysql的時間欄位有date,time,datetime,timestamp等,在實際查詢時間段時,我們經常將整個字段儲存進去,例如像2011-03-10 00:00:00,也有分開儲存年,月,日的方式,或者使用right()等字元擷取函式來進行查詢操作。anyway,我們都是要對一段時間進行查詢。筆者最近在做遊戲道具購買方面的查詢,按照需要,我們要按照周的方式,查詢一周的道具銷售量。使用的方式為下面的這種:
select count(*) from table where buytime>='2011-5-31 00:00:00' and buytime<='2011-6-6 23:59:59' group by itemname
這是一種比較傳統的方式,需要我們自己指定開始和結束時間,經常使用》,between,
unix時間戳
每個時間都對應了乙個唯一的unix時間戳,時間從1970-1-1 00:00:00開始計時,每過一秒,就加1,在mysql中有傳統時間函式和unix時間戳的互換函式。unix_timestamp(datetime) 和from_unixtime(unixtime)
mysql> select unix_timestamp('2011-8-2 8:50:34');
| unix_timestamp('2011-8-2 8:50:34') |
| 1312246234 |
1 row in set (0.03 sec)
mysql> select from_unixtime(1312246234);
| from_unixtime(1312246234) |
| 2011-08-02 08:50:34 |
1 row in set (0.00 sec)
如此一拉,我們把原來的時間字段,替換成現在unix的整型字段,通過對整數比較,可以大大提高效率,查詢時,我們把開始結束時間轉換成unix時間戳。
select count(*) from table where buytime>=unix_stamp('2011-5-31 00:00:00') and buytime<=unix_stamp('2011-6-6 23:59:59') group by itemname.
不過這種方式,比較麻煩的就是查詢之後需要將時間翻轉一次。
mysq基礎優化
skip name resolve skip locking skip innodb skip bdb key buffer 1g記憶體推薦設定為256m,2g記憶體推薦設定為512m wait timeout 3或者5 2g記憶體推薦設定為5 max connections 如果訪問量很大可以設定...
mysql怎麼優化 MYSQL如何優化?
mysql如何優化?結合你的經驗 1.資料庫的設計 盡量把資料庫設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.3 如果沒有用到變長字段的話比如varchar,那就採用固定大小的紀錄格式比如c...
php修改mysql密碼 怎麼修改mysql密碼
怎麼修改mysql密碼?修改mysql密碼的方法 方法1 用set password命令 首先登入mysql。格式 mysql set password for 使用者名稱 localhost password 新密碼 例子 mysql set password for root localhost...