从postgres数据库显示年龄,然后它只显示日期

时间:2016-04-12 12:13:00

标签: django postgresql

我正在执行SQL = "select age (date)" and it's output x year y month,等,然后我将数据发送到Django模板的视图,但它显示z天

这里有SQL,显示" 26年3 Mons 7天"

SELECT *,age(date_of_birth) 
FROM brs_cmu_passenger 
WHERE user_id_id=%s" %(request.user.id)

在html中,显示" 13651天"

{% for u in profile %}
  <p> Age : {{ u.age }}</p>
{% endfor %}

我只想在模板中显示年龄,但Django python无法在模板中计算。

PS。当我将年龄发送到模板django时。这是有价值的。 age=datetime.timedelta(9587)

2 个答案:

答案 0 :(得分:1)

函数age返回interval数据类型。

在您的情况下:26 years 3 Mons 7 days datetime.timedelta(9587)

您可以使用EXTRACT只获得多年:

SELECT *,EXTRACT(YEAR FROM age(date_of_birth)) AS age 
...

答案 1 :(得分:0)

我刚刚在这个页面上找到了不同的东西。虽然这个问题已有四年了,但我认为应该添加一个解决方案:您可以使用内置的timesince Django模板过滤器来代替计算数据库中的日期差异,这样可以为您提供输出类似于PostgreSQL age()函数的字符串输出,另请参阅https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#timesince

不确定何时添加了过滤器,它肯定在Django 1.8和1.9中可用。