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

时间:2017-02-23 01:11:07

标签: python mysql pymysql

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

我的数据库有一个类型为date的日期字段,所以我认为日期对象可用于比较,但这似乎不正确。

我的陈述目前看起来像这样:

current_time = datetime.datetime.now()
sql = "SELECT * FROM `table` WHERE `date`=current_time

然而,这失败并告诉我我的SQL不正确。我不确定问题是SQL,Python还是两者都有,但我无法在网上找到任何例子,而且我已经走到了尽头。

2 个答案:

答案 0 :(得分:1)

使用数据库服务器时间可能会更好吗?如果他们在一台机器上,时间会有所不同,但你会避免时区和其他问题。

sql = "SELECT * FROM `table` WHERE `date`=curdate()";

如果您必须使用Python的机器时间,请使用.strftime("%d/%m/%y")

另外,在date字段中查找正确的格式匹配!

答案 1 :(得分:0)

在MySQL中,您可以选择获取当前(服务器)时间。

 SELECT NOW()

是最明显的。它检索当前的日期和时间。

 SELECT CURDATE()

给你今天。这些将为您提供转换为字符串的日期/时间值。对2017-02-22 20:18:22NOW()看来2017-02-22 00:00:002017-02-22看起来像CURDATE()

以下是NOW()上的一篇文章和CURDATE()上的一篇文章。

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

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

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

这可以从昨天午夜开始,直到今天午夜,但不包括午夜。

如果您希望过去24小时内的所有内容现在结束,请使用此功能。

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

日期算术非常强大。