簡體   English   中英

如何在PyMySQL中編寫使用當前系統時間的查詢?

[英]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:22NOW()2017-02-22 00:00:002017-02-22CURDATE()

這是關於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM