【发布时间】:2019-05-18 17:08:20
【问题描述】:
我在 Python 中有一个使用 sqlalchemy 的 API。
我有一个字符串,它表示 ISO 格式的日期。我使用datetime.strptime 将其转换为:datetime.strptime(ToActionDateTime, '%Y-%m-%dZ')。
现在我必须将表列的值(timestamp)与该日期进行比较。
转换初始 ISO 字符串后,示例结果类似于 2018-12-06 00:00:00。我必须根据日期而不是时间来比较它是否相等,但我无法做到正确。任何帮助将不胜感激。
示例 Python 代码:
ToActionDateTimeObj = datetime.strptime(ToActionDateTime, '%Y-%m-%dZ')
query = query.filter(db.c.Audit.ActionDateTime <= ToActionDateTimeObj)
编辑:
我也尝试对等式的两个部分实施cast,但它也不起作用。当所选日期与时间戳日期匹配时,我无法获得正确的结果。
from sqlalchemy import Date, cast
ToActionDateTimeObj = datetime.strptime(ToActionDateTime, '%Y-%m-%dZ')
query = query.filter(cast(db.c.Audit.ActionDateTime, Date) <= cast(ToActionDateTimeObj, Date))
【问题讨论】:
-
我已经尝试过
cast抱歉忘记提及它。这是行不通的。我还尝试同时投射列和对象,如果我打印投射的对象,我得到的是CAST(:param_1 AS DATE) -
帖子已更新。我不明白为什么它不起作用。
-
我正在使用 Oracle。我的第一个想法是增加 1 天,但我的主管要求我不要使用这种方法。
-
当我在 Oracle SQL Developer 中转换时间戳时,它只返回像“11-NOV-2018”这样的日期。
-
它抛出这个:
cx_Oracle.DatabaseError: ORA-01899: bad precision specifier但我不想只比较一天。我需要比较整个日期。
标签: python sql oracle sqlalchemy