[英]php mysql select date from 1 day ago, upto the minute
我想捕獲 24 小時前同一小時和分鍾發生的數據。 下面的公式不起作用。 真相是什么? 我將在一行中繪制日期范圍,而不是列出。
$now=time();
$24hrb=$now-(24*60*60);
$que = $connc->query("select * from table where datetime='$24hrb';")
在我看來,最好在 SQL 中完成這一切。 您可以使用 mysql interval
s 選項減少 1 天,然后使用like
和substr
來修剪秒數,僅通過分鍾值拉動日期時間。
select * from table where datetime like concat(substr((now() - interval 1 day), 1, 16), '%')
substr
取自這樣的字符串:
2021/01/22 11:12:21
^ ^
並且concat
在最后拋出通配符,因此之后的任何內容都匹配。 所以你的like
被處理為:
2021/01/22 11:12%
$24hrb=time() - (24*60*60);
這是一個時間戳值。 但是你 state 在評論中:
是的。 日期時間格式 Ymd H:i:s
因此,如果您堅持使用此方法,您實際上應該做的是將您的datetime
時間轉換為Unix 時間戳:
$que = $connc->query("SELECT * FROM table
WHERE UNIX_TIMESTAMP(`datetime_column`) = '".(int)$24hrb."'");
這比搞亂連接和字符串操作要好得多,也更容易閱讀。
您可以使用MySQL BETWEEN
關鍵字擴展此操作,以便您可以獲得在時間范圍之間找到的值,例如 +/- 30 秒。 所以:
$que = $connc->query("SELECT * FROM table
WHERE UNIX_TIMESTAMP(`datetime_column`)
BETWEEN ".($24hrb - 30)." AND ".($24hrb + 30));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.