[英]add datetime.timedelta() to a python mysql query
我想将以下具有datetime变量的代码添加到mysl查询中:
tb1.primeday > (datetime.now().date() - timedelta(days=Days))
对此查询:
q = """
SELECT tb1.id
FROM tb1
join tb3 ON tb3.id= tb1.csid
"""
我已经尝试过了,但是不起作用:
q = """
SELECT tb1.id
FROM tb1
join tb3 ON tb3.id= tb1.csid
WHERE TIMESTAMPDIFF(DAY, tb1.primeday, TIMESTAMPDIFF(DAY,
{},tb3.Days))
""".format(datetime.now().date())
tb1.primeday
的格式类似于:
YYYY-MM-DD
您是否知道问题出在哪里或最佳解决方案是什么?
如果打印q
的值,您将看到类似以下内容:
>>> print(q)
SELECT tb1.id
FROM tb1
join tb3 ON tb3.id= tb1.csid
WHERE TIMESTAMPDIFF(DAY, tb1.primeday, TIMESTAMPDIFF(DAY,
2019-08-24,tb3.Days))
我记得,任何文字日期都应加引号。 因此,您应将{}
替换为'{}'
。
q = """
SELECT tb1.id
FROM tb1
join tb3 ON tb3.id= tb1.csid
WHERE TIMESTAMPDIFF(DAY, tb1.primeday, TIMESTAMPDIFF(DAY,
'{}',tb3.Days))
""".format(datetime.now().date())
结果将是
SELECT tb1.id
FROM tb1
join tb3 ON tb3.id= tb1.csid
WHERE TIMESTAMPDIFF(DAY, tb1.primeday, TIMESTAMPDIFF(DAY,
'2019-08-24',tb3.Days))
根据文档,这应该正常工作。
(感谢第一条评论的作者)
另一方面,如果MySQL服务器和计算机上的时钟已同步,则可以用DATE(NOW())调用替换文字日期的创建。
q = """
SELECT tb1.id
FROM tb1
join tb3 ON tb3.id= tb1.csid
WHERE TIMESTAMPDIFF(DAY, tb1.primeday, TIMESTAMPDIFF(DAY,
DATE(NOW()),tb3.Days))
"""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.