如何从Django中的时间戳中仅提取一天

Posted

技术标签:

【中文标题】如何从Django中的时间戳中仅提取一天【英文标题】:how to extract only day from timestamp in Django 【发布时间】:2021-10-14 19:59:09 【问题描述】:

我想从 (2021-8-3) 中获得一个特定的日期,例如“8”,但它的显示如下image

如何提取具体日期?

 usertime = User.objects.filter(groups__name = 'patient').values('date_joined').annotate(date_only=Cast('date_joined', DateField()))

【问题讨论】:

从日期时间字段中仅提取一天尝试 date_joined__day 【参考方案1】:
from django.db.models import F, Func,Value, CharField

usertime = (User.objects.filter(groups__name = 'patient').values('date_joined')
            .annotate(date_only=Func(
                F('date_joined'),
                Value('MM'),
                function='to_char',
                output_field=CharField()
            )
                     ).values('date_only'))

试试这个, 从@Yannics 得到参考答案:https://***.com/a/60924664/5804947

您可以进一步在Value字段下分别使用YYYY/DD作为年份/日期,并且在使用PostgreSQL数据库时可以正常工作。

另一种方法

from django.db.models.functions import Extract
usertime = User.objects.filter(groups__name = 'patient').values('date_joined').annotate(date_only=Extract('date_joined', 'month'))

【讨论】:

to_char 如果我没记错的话是用于 postgresql 的。因此它在我的数据库 sqlite3 上不起作用。我应该为 sqlite3 使用什么? 你可以试试convert,我认为这是sqlite3中使用的那个。我对 sqlite3 不太了解。对不起 usertime = (User.objects.filter(groups__name='patient').values('date_joined') .annotate(date_only=Func( F('date_joined'), Value('DD'), function='strftime', output_field=CharField() )).values('date_only')) 显示 跨度> 试试下面的代码 sn-p ` usertime = User.objects.filter(groups__name = 'patient').values('date_joined').annotate(date_only=Cast('date_joined', DateField() )) for u in usertime: u['date_only'] = u['date_only'].month print(usertime) `这是一种解决方法,但我认为你会实现你想要的。这只是遍历查询集中的每个实例并重新分配月份来代替日期。 usertime = User.objects.filter(groups__name = 'patient').values('date_joined').annotate(date_only=Cast('date_joined', DateField())) days = [] for u in usertime: u = u['date_only'].day print(u) days.append(u) 这工作正常。谢谢

以上是关于如何从Django中的时间戳中仅提取一天的主要内容,如果未能解决你的问题,请参考以下文章

pandas:从时间戳中提取日期和时间

如何在 mysql PDO 选择查询中仅从时间戳中选择时间?

从时间戳中提取时间?

如何从java中的unix时间戳中提取时间? [复制]

如何从java中的字符串时间戳中提取日期和时间

如何从 Hiveql 中的 select over 语句中仅提取最近一周?