如何在 PyMySQL 中编写使用当前系统时间的查询?

How can I write a query that uses the current system time in PyMySQL?

我正在尝试在 Python 中编写一个 SQL 语句,它将使用当前系统时间来查询数据库。

我的数据库有一个 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() and one on CURDATE() 的文章。

关于时区处理有很多话要说,但你没有问。暗示。使用 TIMESTAMP 数据类型和时区处理工作顺利。

如果您有一堆带有日期/时间戳的记录,请使用它来获取昨天的记录。

  SELECT whatever
    FROM table
   WHERE datestamp >= CURDATE() - 1 DAY
     AND datestamp <  CURDATE()

这会获取从昨天午夜开始直到但不包括今天午夜的所有内容。

如果你想立即结束过去 24 小时内的所有内容,请使用此选项。

  SELECT whatever
    FROM table
   WHERE datestamp >= NOW() - 1 DAY

日期运算很厉害