如何从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'))
显示 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中的时间戳中仅提取一天的主要内容,如果未能解决你的问题,请参考以下文章