python - 关于日期时间的“LIKE”查询的 Django ORM 语法
问题描述
我有这张表,其中包含格式为“2021-03-12 08:12:44.350176”的“日期”列。我想比较一个外部日期,例如“2021-03-12 08:12:44”
我试过这个
new_date = datetime.datetime(2021, 3, 12, 8, 12, 44, tzinfo=<UTC>)
obj = Test.objects.filter(date__contains=new_date).all()
但它不起作用,它返回空集。我的目标是根据 new_date 获取所有记录。
有没有办法删除毫秒或比较两个日期的方法?
解决方案
您似乎想在截断毫秒的同时比较日期时间到秒。您可以通过使用Trunc
[Django docs]或其子类之一来做到这一点(和类似的)。为了截断您可以使用的秒数TruncSecond
:
import datetime
from django.db.models.functions import TruncSecond
from django.utils import timezone
new_date = datetime.datetime(2021, 3, 12, 8, 12, 44, tzinfo=timezone.utc)
obj = Test.objects.annotate(
trunc_date=TruncSecond(
'date',
tzinfo=timezone.utc
)
).filter(trunc_date=new_date)
推荐阅读
- json - 不能使用“encoding/json”覆盖 eagle(类型接口 {})
- html - Html DIV 未水平对齐
- reactjs - Reference.set 失败:第一个参数在属性“users.undefined.email”中包含未定义
- html - CSS隐藏的元素仍然占用页面空间-如何设置显示:无条件?
- r - R中的倾向得分
- java - 使用 JNA 获取服务列表
- cookies - 将密码哈希保存在 cookie 中以进行授权是个好主意吗
- javascript - React-native 版本未匹配尝试了堆栈溢出和其他平台上可用的所有解决方案
- c# - 如何从本地 HTML 文件获取更新的内容以显示在 UWP 应用程序的 WebView 中?
- dart - CupertinoSliverNavigationBar largeTitle 多行