Python mysql中django queryset extra()中的日期格式
我正在使用此查询筛选每月总销售额的销售数据Python mysql中django queryset extra()中的日期格式,python,mysql,django,Python,Mysql,Django,我正在使用此查询筛选每月总销售额的销售数据 Sales(models.Model): # ... ommitted fields... amount = models.DecimalField(...) date = models.DateTimeField(...) 输出如下所示: Sales.objects.all() .extra(select={'month': 'MONTHNAME(date)'}) .values('month') .
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')
但是我想要的是将月份名称格式化为3个字母,只显示如下:'Jul'
和'Aug'
和.extra(选择={'month':'DATE_格式(DATE,'%b')')}
不起作用
Django:v1.10+
数据库:MySQL我选中了.extra(选择={'month':“DATE\u格式(DATE,'%b')”)”}
,似乎在b
之前需要一个额外的%
,它将以3个字母的形式为您提供一个月。在Django也有类似的问题
对于今天的日期,.extra(选择={'month':“date_格式(date,%%b')”})
printsJul
和更好的如果您想避免使用extra
并创建一个数据库不可知的解决方案,那么您可以使用
我选中了.extra(select={'month':“DATE\u FORMAT(DATE,'%b')”)”}
,似乎您需要在b
之前添加一个%
,它将以3个字母的形式显示月份。在Django也有类似的问题
对于今天的日期,.extra(选择={'month':“date_格式(date,%%b')”})
printsJul
和更好的如果您想避免使用extra
并创建一个数据库不可知的解决方案,那么您可以使用
这很奇怪,但格式化字符串中需要%%。此外,如果联接上的列名不明确,则可能必须指定表(任务)
sales_data = Sales.objects
.annotate(month=TruncMonth('date', tzinfo=pytz.timezone('Asia/Calcutta')))
print sales_data.month.strftime('%b') # Prints Jul
这很奇怪,但格式化字符串中需要%%。此外,如果联接上的列名不明确,则可能必须指定表(任务)
sales_data = Sales.objects
.annotate(month=TruncMonth('date', tzinfo=pytz.timezone('Asia/Calcutta')))
print sales_data.month.strftime('%b') # Prints Jul
这个返回的是什么。额外(select={'month':'month(date,'%b')')})它返回索引58处的
不支持的格式字符'b'(0x62)
sirtry monthname in place of month当您仔细查看我的问题时,这是我最初的方法注意不鼓励使用。您应该能够将annotate与表达式一起使用。这个返回什么。extra(select={'month':'month(date,'%b')')'))它返回索引58处不受支持的格式字符'b'(0x62)
sirtry monthname代替month当您仔细查看我的问题时,这是我的原始方法注意不鼓励使用。您应该能够将annotate与表达式一起使用。
tasks = tasks.extra(
select={
'lastModified':
"DATE_FORMAT(%s.lastModified, '%s')" % (
Task._meta.db_table,
'%%m-%%d-%%Y',
),
'dateRequested': "DATE_FORMAT(dateRequested, '%%m-%%d-%%Y')",
'dateCompleted': "DATE_FORMAT(dateCompleted, '%%m-%%d-%%Y')",
},
)