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')",
  },
)