django convert .values_list('datetimefield') to date

穿精又带淫゛_ 提交于 2020-08-03 05:49:28

问题


I would like to convert a a values_list field with a datetime object to a date object.

.values_list('time_finished', flat=True)

gives me "2016-03-22T18:52:53.486Z" and what I would like is "2016-03-22"

Thank you!


回答1:


You can use datetime.datetime.date() method to get datetime.date object:

>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2016, 4, 12, 15, 54, 48, 401418)
>>> dt.date()
datetime.date(2016, 4, 12)

Use datetime.datetime.strftime to get string:

>>> dt.strftime('%Y-%m-%d')
'2016-04-12'

[dt.date() for dt in query.values_list('time_finished', flat=True)]



回答2:


You can use extra to run some database functions directly such as using DATE:

queryset = queryset.extra(select={'time_finished_date': 'DATE(time_finished)'}).values_list('time_finished_date', flat=True)

If you print the SQL query from the queryset, it will look something like this:

>>> print(queryset.query)
# SELECT (DATE(time_finished)) AS "time_finished_date" FROM <<tablename>>


来源:https://stackoverflow.com/questions/36565611/django-convert-values-listdatetimefield-to-date

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!