如何解决试图让python sqlite与DATE而不是实际的DATETIME字段进行比较
我有一些无法使用的代码...
currentTime = dt.utcnow().date() get just the day has to be UTC cause that what stored in db.
print(currentTime) #shows day of 2020-09-03
cur = conn.cursor()
cur.execute("SELECT f.user_id,u.first_name,f.location,f.checkin,f.checkout FROM auth_user u JOIN covidlog_onsitelog as f ON (f.user_id=u.id) WHERE CAST(f.checkin as 'DATE()') = ? or CAST(f.checkout as 'DATE()') =?",(currentTime,currentTime))
该字段是在django中创建为模型的,其中包含以下项目:
2020-09-03 00:40:58.901602
但是我只是想比较DAY,而不考虑时间...尽管它似乎没有用。
对我来说,这看起来不错,但没有产生结果,所以我只能假设它仍然仍然以某种方式将日期与时间戳进行比较...知道如何不这样做并与日期进行字面比较吗?
解决方法
您要date()
吗?
where date(f.checkin) = date(?) or date(f.checkout = date(?)
尽管键入时间更长,但在表列上不使用日期函数时,它可能会更有效地表示出来:
where
(f.checkin >= date(?) and f.checkin < date(?,'+1 day')
or (f.checkout >= date(?) and f.checkout < date(?,'+1 day')
,
检查您的f.checkin和f checkout字段是否为datetimestring,在这种情况下,您可以使用date(f.checkin)和date(f.checkout)代替CAST(f.checkin作为'Date()') 您可能需要查看“ https://stackoverflow.com/questions/4428795/sqlite-convert-string-to-date”和“ https://www.tutlane.com/tutorial/sqlite/sqlite -date-function#:〜:text =语法%20of%20SQLite%20date(),datetime%20string%20value%20into%20date。&text =%20SQLite%20date()%20function,YYYY%2DMM%2DDD%20format。 ” 您的WHERE子句如下:
WHERE
DATE(f.checkin) = ? OR DATE(f.checkout) = ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。