比较 Django 中的日期和日期时间

     2023-02-24     296

关键词:

【中文标题】比较 Django 中的日期和日期时间【英文标题】:Compare date and datetime in Django 【发布时间】:2012-04-20 08:25:09 【问题描述】:

我有一个带有日期时间字段的模型:

class MyModel(models.Model):
    created = models.DateTimeField(auto_now = True)

我想获取今天创建的所有记录。

我试过了:

MyModel.objects.all().filter(created = timezone.now())

MyModel.objects.all().filter(created = timezone.now().date())

但总是得到一个空集。 Django 中执行此操作的正确方法是什么?

编辑:

看起来很奇怪,但是今天创建的记录 (06.04.2012 23:09:44) 在数据库中有日期 (2012-04-07 04:09:44)。当我尝试在管理面板中对其进行编辑时,它看起来是正确的(06.04.2012 23:09:44)。 Django 会以某种方式处理它吗?

【问题讨论】:

听起来您遇到了时区问题。根据documentation django 存储日期,数据库中的时区信息为UTC。 【参考方案1】:

从 2015 年的某个地方开始:

YourModel.objects.filter(some_datetime__date=some_date)

即__date 在日期时间字段之后。

https://code.djangoproject.com/ticket/9596

【讨论】:

从 Django 1.9 开始,准确地说是 (docs.djangoproject.com/en/1.9/ref/models/querysets/#date) 这应该是公认的答案,无法想象更干净的 +1。脑洞大开【参考方案2】:

可能有更合适的解决方案,但快速检查表明这是可行的:

from datetime import timedelta

start_date = timezone.now().date()
end_date = start_date + timedelta( days=1 ) 
Entry.objects.filter(created__range=(start_date, end_date))

我假设时区是一个类似日期时间的对象。

重要的是,您要存储精确的时间,精确到毫秒,然后将其与仅精确到当天的时间进行比较。 django/python 不会折腾小时、分钟和秒,而是将它们默认为 0。因此,如果您的记录是在 2011-4-6T06:34:14am 创建的,那么它会比较 2011-4-6T:06:34:14am到 2011-4-6T00:00:00,而不是 2011-4-6(从创建日期开始)到 2011-4-6(从 timezone.now().date() 开始)。有用吗?

【讨论】:

知道了...看起来很奇怪,但是今天创建的记录 (06.04.2012 23:09:44) 在数据库中有日期 (2012-04-07 04:09:44)。 Django 会以某种方式处理它吗? @Just_Mad,是的,django 将所有内容作为 UTC 存储在数据库中。 时区应该从哪个导入?【参考方案3】:

试试这个

from datetime import datetime
now=datetime.now()
YourModel.objects.filter(datetime_published=datetime(now.year, now.month, now.day))

【讨论】:

行不通,您仍将 2011-04-06TXX:XX:XX 与 2011-04-06T00:00:00 进行比较。这将是错误的,返回 None。 我不明白它应该如何工作。它完全等同于“SELECT * FROM table WHERE date='2002-04-05'” YourModel.objects.filter(created__published=datetime(now.year, now.month, now.day)),我说的对吗? 删除 __published 它只是一个名称的例子,使用 YourModel.objects.filter(created=datetime(now.year, now.month, now.day)) 好吧,它也无济于事。请查看我的问题的编辑。希望这可以清除情况。

Django - 日期和时间字段说明

】Django-日期和时间字段说明【英文标题】:Django-DateandTimeFieldExplanation【发布时间】:2014-08-2904:30:13【问题描述】:关于模型和表单类中的日期和时间字段,我有几个问题。1.)在日期字段的文档中,“规范化为:Pythondatetime.date对... 查看详情

比较 Derby 中的时间戳和日期

】比较Derby中的时间戳和日期【英文标题】:comparingtimestampanddateinDerby【发布时间】:2012-06-1315:02:36【问题描述】:我需要比较SELECT查询中的日期和时间戳。通常,大多数其他DB平台(MySQL、MSSQL、Oracle等)都支持此功能,但在Derby... 查看详情

比较 Jinja 中的日期时间

】比较Jinja中的日期时间【英文标题】:ComparingDatetimeinJinja【发布时间】:2021-10-1302:26:06【问题描述】:我正在与Django合作。我的模板中有以下变量:startingTime它的值来自数据库(DateTimeField)currentTime实际上是一个包含datetime.date... 查看详情

django 1.4 - 无法比较 offset-naive 和 offset-aware 日期时间

】django1.4-无法比较offset-naive和offset-aware日期时间【英文标题】:django1.4-can\'tcompareoffset-naiveandoffset-awaredatetimes【发布时间】:2012-05-2600:56:25【问题描述】:我正在将应用程序从django1.2迁移到1.4。我有一个每日任务对象,其中包含... 查看详情

Django 仅基于日期过滤日期时间

...下文。我想将它与数据库中的确切日期日期时间字段进行比较,但我想完全匹配 查看详情

模型上的 Django 中的日期时间?

】模型上的Django中的日期时间?【英文标题】:DatetimeOnDjangoonmodels?【发布时间】:2017-10-0719:41:24【问题描述】:所以我只想问是否有关于Django数据类型的文档,或者你可以给我特定的数据类型来获取模型上的日期时间字段。后... 查看详情

比较对象数组中的日期和时间

】比较对象数组中的日期和时间【英文标题】:Comparedateandtimeinarrayofobjects【发布时间】:2021-11-2111:23:29【问题描述】:我正在尝试比较日期和时间来处理我的数据。我需要通过检查对象内的updated_at键来检查哪个是最新数据。下... 查看详情

django中的日期处理注意事项和自定义时间格式转换(代码片段)

我们在用Django创建models时,常常会涉及时间日期字段的处理,Django里日期相关Field有DateTimeField、DateField和TimeField三种类型,看似简单,但其中有一些容易出错的地方需要注意;另外,如果不习惯Django的默认时间格式,也可以自定... 查看详情

基于比较日期的Django查询集[重复]

】基于比较日期的Django查询集[重复]【英文标题】:Djangoquerysetbasedoncomparingdates[duplicate]【发布时间】:2012-08-0508:22:23【问题描述】:可能重复:HowdoyouselectbetweentwodateswithDjango我的django模型包含2个字段-c_date和c_int。因为我在创建... 查看详情

带有时区的 django 中的 Unix 时间戳到日期时间

...此时间戳解释为新加坡时间戳,然后转换为utc以与db进行比较。为了我自己,我无法弄清楚如何告诉django这个时间戳来自当前时区,新加 查看详情

比较表格中的日期和表格中的日期

】比较表格中的日期和表格中的日期【英文标题】:Comparedatefromformwithdateintable【发布时间】:2016-06-2515:13:08【问题描述】:在Access2016上构建预订系统我想对新预订进行一些验证,以确保设施可用。我似乎遇到的问题是将来自表... 查看详情

使用 SQLite 的 Django 中的日期时间差异

】使用SQLite的Django中的日期时间差异【英文标题】:DatetimedifferencesinDjangousingSQLite【发布时间】:2015-12-1613:27:27【问题描述】:我正在创建一个需要执行日期差异的Django应用程序。给定一个在Postgres上具有start_date和end_date的模型... 查看详情

使用mysql和django按日期时间删除数据库中的条目?

】使用mysql和django按日期时间删除数据库中的条目?【英文标题】:Deleteentryindatabasebydatetimewithmysqlanddjango?【发布时间】:2011-10-2013:06:47【问题描述】:我在django1.3中使用mysql,并且我将帖子存储在数据库中。这些帖子会存储一段... 查看详情

Django 模板和 URLconf 中的日期翻译

】Django模板和URLconf中的日期翻译【英文标题】:DatetranslationinDjangotemplatesandURLconf【发布时间】:2012-03-0807:32:36【问题描述】:我在设置文件中有一个用法语设置的django网站。在我的模板中,我有以下条目<ahref="/year/month|... 查看详情

将日期和时间与 MySQL 中的当前时间进行比较

】将日期和时间与MySQL中的当前时间进行比较【英文标题】:ComparedateandtimetocurrenttimeinMySQL【发布时间】:2021-10-0302:49:58【问题描述】:我正在使用php开发办公室管理系统,我想创建两个约会数据表。一个将按降序显示以前的约... 查看详情

Django 模板中的日期/时间格式

】Django模板中的日期/时间格式【英文标题】:Date/TimeformattinginDjangoTemplate【发布时间】:2019-01-2112:49:18【问题描述】:我有一个字段,它是从api返回并作为字典传递给我的模板的更大数据集的一部分。该字段是iso8601格式的日期... 查看详情

django中的时间格式问题[重复]

...时间,我正在尝试使用此日期时间字段过滤数据。我用来比较的输入日期时间是不同的格式,如2016-1-5T5:00:00,而存储在djna 查看详情

我如何将当前日期与日期选择器中的用户输入日期进行比较

】我如何将当前日期与日期选择器中的用户输入日期进行比较【英文标题】:howdoicomparecurrentdatewithuserinputdatefromdatepicker【发布时间】:2013-06-1211:55:48【问题描述】:我试图限制日期和时间。我希望如果用户尝试将日期设置为小... 查看详情