sql-server - Django 将日期解析为 QuerySet 中的 dd-mm-yyyy
问题描述
我有以下 QuerySet 来检索 SQL Server 数据库中记录计数的所有日期。
def get_amount_per_day(self):
return self.extra(select={'time': 'CONVERT(DATE, starttime)'}).values(
'time').annotate(amount=Count('starttime')).order_by('time')
输出是:
{
"time": "2019-03-07T00:00:00",
"amount": 216
},
{
"time": "2019-03-07T01:00:00",
"amount": 178
}
}
但我想将日期解析为07-03-2019
,有谁知道我怎么能做到这一点?
我试图将日期转换为,varchar
但随后order_by
无法正常工作。它必须是 type DATE
。
解决方案
您可以使用Cast
. 例如:
from django.db.models.functions import Cast
from django.db.models import DateField
YourModel.objects.annotate(start_date=Cast('starttime', DateField()))
更新
你可以尝试这样使用database functions
:
from django.db.models.functions import ExtractDay, ExtractMonth, ExtractYear
YourModel.objects.annotate(
year=ExtractYear('starttime'),
month=ExtractMonth('starttime'),
day=ExtractDay('starttime')
).annotate(start_date=F('date')+'-'+F('month')+'-'+F('year')).values('start_date')
未经测试的代码
基于这个答案,你可以这样尝试:
YourModel.objects.annotate(start_date=ExpressionWrapper(
Func(F('starttime'), Value('%d-%m-%Y'), function='DATE_FORMAT'), output_field=CharField()
))
推荐阅读
- ios - 如何在 Swift 中直接将 Dictionary 转换为 Codable 实例?
- javascript - 使用 Webpack 调试 JavaScript
- jquery - ChartJS 版本 3 如何向饼图工具提示添加百分比
- phantomjs - 使用 phantomjs 从 post call html 响应中获取 svg
- package - 将清单文件上传到 Office 商店的问题
- gitversion - 将版本传递到分支
- visual-studio-code - 有没有办法将命令添加到侧栏中的源代码管理中的更多操作
- flutter - Flutter MVVM 堆叠封装
- angular - 运行一个旧的 Angular 项目
- swift - Flutter 中是否存在“失败的类型转换”?