[英]How can I write a query that uses the current system time in PyMySQL?
我正在嘗試用Python編寫一條SQL語句,該語句將使用當前系統時間來查詢數據庫。
我的數據庫有一個日期類型為date
的date字段,所以我認為可以使用date對象進行比較,但這似乎不正確。
我的陳述目前看起來像這樣:
current_time = datetime.datetime.now()
sql = "SELECT * FROM `table` WHERE `date`=current_time
但是,這失敗了,並告訴我我的SQL不正確。 我不確定問題是否出在SQL,Python或兩者都存在,但我無法在線找到任何示例,因此我已經走到盡頭了。
也許使用數據庫服務器時間會更好? 如果它們在單台計算機上,則時間不會有差異,但是您可以避免時區和其他問題。
sql = "SELECT * FROM `table` WHERE `date`=curdate()";
如果必須使用Python的機器時間,請使用.strftime("%d/%m/%y")
另外,在date
字段中查找正確的格式匹配!
在MySQL中,您有幾種選擇來獲取當前(服務器)時間。
SELECT NOW()
是最明顯的。 它檢索當前日期和時間。
SELECT CURDATE()
給你今天。 這些將使您將日期/時間值轉換為字符串。 看起來像2017-02-22 20:18:22
的NOW()
和2017-02-22 00:00:00
或2017-02-22
的CURDATE()
。
這是關於NOW()
一篇CURDATE()
和關於CURDATE()
一篇CURDATE()
。
關於時區處理,有很多要說的,但是您沒有問。 暗示。 使用TIMESTAMP
數據類型,時區處理可以順利進行。
如果您有一堆帶有日期/時間戳記的記錄,請使用它來獲取昨天的記錄。
SELECT whatever
FROM table
WHERE datestamp >= CURDATE() - 1 DAY
AND datestamp < CURDATE()
這使一切從昨天的午夜開始,直到今天不包括午夜。
如果您希望最近24小時之內的一切現在都結束,請使用此功能。
SELECT whatever
FROM table
WHERE datestamp >= NOW() - 1 DAY
日期算術功能非常強大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.