需要在31月23日23:59:59(月底)查找狀態爲1的所有用戶列表的建議。mysql:在特定時間獲取數據
select count(*) from users where status=1 and created_at=?
需要在31月23日23:59:59(月底)查找狀態爲1的所有用戶列表的建議。mysql:在特定時間獲取數據
select count(*) from users where status=1 and created_at=?
將數據庫恢復到前一次的一種方法是將binlog反向運行到當前數據庫狀態。
或
啓動數據庫模式並運行與僅與表相關的binlog中的所有語句。
採取奴隸的幫助,如果仍有一些以前的狀態
以下語法會給有狀態= 1的任何用戶,並且是在31創建:一月的ST 2014
select count(*)
from users
where status=1 and DATE(created_at)='2014-01-31'
這種語法將給具有準確時間'2014-01-31 23:59:59'的用戶。假設dateformat是相同的。似乎用戶在那個時候創建了unlikley。
select count(*)
from users
where status=1 and created_at='2014-01-31 23:59:59'
select
count(*)
from
users
where status=1 and
created_at = concat(last_day(curdate(), ' 23:59:59'));
last_day()
功能here如果使用Linux服務器,然後通過cronjob-
保存安排如下腳本低於user.sh文件中的行。
六user.sh
#!/bin/bash
DBUSER=your_server_user
DBPASS=your_server_pass
mysql -u$DBUSER -p$DBPASS db_name -e "select count(*) from users where status=1;" >> user.xls
echo -e "Please get the attached user Report." | mail -s"user Report" -a user.xls [email protected]
現在cron利用此腳本 -
crontab -e命令
59 23 31 1 * /script_path/user.sh
將在23:59執行31,揚並將用戶報告發送到您的郵件ID。
如果您使用的是Windows服務器,那麼您可以創建一個批處理文件並在Windows任務調度的幫助下調用它。
在你提到的一個表中存儲歷史用戶更新的評論。您可以使用此表來檢查誰在那個時候有狀態1用戶:
SELECT COUNT(DISTINCT user_id) AS users
FROM status_history sh
WHERE
sh.created = (SELECT MAX(sx.created)
FROM status_history sx
WHERE sx.user_id = sh.user_id
AND sx.created < '2014-01-31 23:59:59')
AND sh.status = 1
我們做一個內部的選擇,以獲得每個狀態和用戶的最新狀態更改日期和抓住歷史與日期。然後,我們計算任何狀態爲1
的人。顯然,如果你的表格模式不同,你可能需要調整上述內容。
現在狀態改變了嗎? – avisheks
是@avisheks狀態可以在下個月更改。需要查找所有用戶的31個1月狀態 – jacob21
您是否在某處維護用戶狀態更改的歷史記錄? – rakeshjain