我記錄了表中的登錄。我有ID,IP,日期和時間的列。從登錄記錄中,我只想在最後一小時內提取登錄信息。MySQL:最近一小時添加的行添加
我在時間和日期功能的MySQL文檔sweaping,但我似乎無法正確地結合它們。
有人可以幫我嗎?
我記錄了表中的登錄。我有ID,IP,日期和時間的列。從登錄記錄中,我只想在最後一小時內提取登錄信息。MySQL:最近一小時添加的行添加
我在時間和日期功能的MySQL文檔sweaping,但我似乎無法正確地結合它們。
有人可以幫我嗎?
利用DATE_SUB()和現在的()函數:
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
希望它可以幫助你:)
是的,我做了這樣的事情,只有TIMESUB(或SUBTIME?)。但是,這是否要求日期字段是日期時間類型? – 2010-09-09 23:48:37
是的使用TIMESUB更合適。是的,第一個表達式必須是日期時間表達式。第二個應該是時間表達。檢查了這一點http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_subtime – SDReyes 2010-09-10 00:14:06
以UTC保存數據,有必要使用UTC_TIMESTAMP()而不是NOW( )。 – 2017-05-06 16:57:01
沒有細節,我認爲DATE_ADD()將工作..通過增加你的where子句現在負小時
(或DATE_SUB())
我建議有一個datetime列,而不是日期和時間列的添加。
假設你有一個名爲LAST_LOGIN日期時間列:
SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
如果需要打印某一天的日期,該怎麼辦?我不想取前一天的日期,而只是今天的日期。你能幫我解決嗎? – Sap 2015-03-04 06:50:14
它可以很容易地使用
select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
您還可以使用CURDATE()來完成功能
SELECT
count(*) AS TotalCount
FROM
tblName
WHERE
datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
是四個或三列,「日期和時間」的數據類型是什麼? – 2010-09-09 23:41:48
現在更改了它,只有一列用於日期和時間 - 以及它的日期時間。 – 2010-09-09 23:49:37