我正在尝试用Python编写一个SQL语句,它将使用当前系统时间来查询数据库。
我的数据库有一个类型为date
的日期字段,所以我认为日期对象可用于比较,但这似乎不正确。
我的陈述目前看起来像这样:
current_time = datetime.datetime.now()
sql = "SELECT * FROM `table` WHERE `date`=current_time
然而,这失败并告诉我我的SQL不正确。我不确定问题是SQL,Python还是两者都有,但我无法在网上找到任何例子,而且我已经走到了尽头。
答案 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:22
和NOW()
看来2017-02-22 00:00:00
或2017-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
日期算术非常强大。