Re: [請益] 請問連續登錄天數要怎麼判斷比較合理

看板PHP作者 (肯先生)時間13年前 (2011/01/15 09:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/6 (看更多)
※ 引述《Jerr (身為老爸老媽嚕..)》之銘言: : ※ 引述《maplecat (楓葉喵)》之銘言: : : 其實要是我寫我應該會直接在資料庫在撈取時就直接進行判斷 : : 警告"這只是個想法" 我也不確定對不對~ : : 請替換裡面欄位名與變數~~~ : : $SeTime = "SELECT * "; : : $SeTime .= "FROM `LoginTimeTable` "; : : $SeTime .= "WHERE `NowLogin` - `LastLoginTime` >= 86400"; : : 這樣子再去加使用者條件 判斷是否有數據 : : 應該就可以判斷了吧? : 86400會精確到秒 : 如果精確到日就可以的話, MySQL 可用 DATEDIFF : SELECT DATEDIFF( NOW(), login_time ) FROM `User`; : http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\ : #function_datediff : php 5.3 有 date_diff 可以用,事實上他是 DateTime::diff() : 參數是兩個DateTime object,return 的是 DateInterval object : http://tw2.php.net/manual/en/datetime.diff.php 用 DATEDIFF 的話,最好用 explain 看一下.... mysql> explain SELECT date FROM xxxx FORCE INDEX (date) WHERE DATEDIFF(NOW(),date)>=1 LIMIT 10\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: daily type: index possible_keys: NULL key: date key_len: 12 ref: NULL rows: 3486117 Extra: Using where; Using index 1 row in set (0.00 sec) mysql> explain SELECT date FROM xxxx WHERE date<=DATE_SUB(NOW(),INTERVAL 1 DAY) LIMIT 10\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: daily type: range possible_keys: date key: date key_len: 3 ref: NULL rows: 1743058 Extra: Using where; Using index 1 row in set (0.08 sec) mysql> 兩個 SQL 的結果是一樣的,不過一個要掃三百多萬筆,另一個只要掃一百七十萬筆。 實際的狀況還是得在自己的 mysql 跑跑看。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.232.77 ※ 編輯: KC73 來自: 123.192.232.77 (01/15 09:58)
文章代碼(AID): #1DCFxWxE (PHP)
討論串 (同標題文章)
文章代碼(AID): #1DCFxWxE (PHP)