gpt4 book ai didi

python - mysql中django queryset extra()中的日期格式

转载 作者:行者123 更新时间:2023-11-29 06:57:09 25 4
gpt4 key购买 nike

Sales(models.Model):
# ... ommitted fields...
amount = models.DecimalField(...)
date = models.DateTimeField(...)

我正在使用此查询过滤销售数据以及一个月内的销售总额

Sales.objects.all()
.extra(select={'month': 'MONTHNAME(date)'})
.values('month')
.annotate(total=SUM('amount'))
.values('month', 'total')

输出如下:

[
{
"total": 186.0,
"month": "July"
},
{
"total": 278.0,
"month": "August"
}
]

但我想要的是将月份名称格式化为 3 个字母,仅显示如下:'Jul''Aug'.extra( select={'month': 'DATE_FORMAT(date, '%b')'}) 不起作用。

Django:v1.10+

数据库:MySQL

最佳答案

我检查了 .extra(select={'month': "DATE_FORMAT(date, '%b')"}) ,看来您需要额外的 %b 之前,这将为您提供 3 个字母中的月份。 Django ticket 中也有类似的问题

对于今天的日期,.extra(select={'month': "DATE_FORMAT(date, '%%b')"}) 打印 Jul

更好如果您想避免使用额外并创建与数据库无关解决方案,那么您可以使用 TruncMonth

sales_data = Sales.objects
.annotate(month=TruncMonth('date', tzinfo=pytz.timezone('Asia/Calcutta')))

print sales_data.month.strftime('%b') # Prints Jul

关于python - mysql中django queryset extra()中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45140729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com