2016-04-12 26 views
0

我執行SQL = "select age (date)" and it's output x year y month,等等,然後我將數據發送到視圖Django的模板,但它顯示Z天顯示年齡,那麼它的秀天只

這裏SQL,顯示「26.年2個蒙斯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)

+0

如果你使用Django,那麼你應該嘗試使用ORM。無論哪種方式,你也應該顯示你已經嘗試過,並試圖給一個明智的標題 – Sayse

回答

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

我剛剛結束了這個網頁上,同時尋找不同的東西。雖然問題已經四年了,但我認爲應該增加一個解決方案:不用計算數據庫中的日期差異,也可以使用內置的Django模板過濾器,它應該爲您提供類似於字符串的輸出PostgreSQL age()函數的輸出,另請參閱https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#timesince

不知道何時添加過濾器,它肯定在Django 1.8和1.9中可用。