2017-05-28 340 views
1

我試圖計算最古老的人的年齡,並只顯示組中的那個peson。SQLite 3 Max()函數

下面這段代碼給了我正確的人,但不正確的年齡(瑪格麗特,69)

SELECT FirstName as Name, 
max((strftime('%Y', 'now') - strftime('%Y', BirthDate)) 
    - (strftime('%m-%d', 'now') < strftime('%m-%d', BirthDate))) as Age 
FROM Employee; 

下面這段代碼給了我所有的人和正確的年齡(瑪格麗特,58)

SELECT FirstName as Name, 
    (strftime('%Y', 'now') - strftime('%Y', BirthDate)) 
    - (strftime('%m-%d', 'now') < strftime('%m-%d', BirthDate)) as Age 
FROM Employee; 

請有人幫忙解釋一下嗎?

+0

哪個SQLite的版本? –

回答

0

這可能取決於你的BirthDate在如何定義的,但如果它是sqlite3的標準YYYY-MM-DD嘗試:

SELECT FirstName as Name, CAST((julianday('now') - julianday(BirthDate))/365 AS INTEGER) as age 
    FROM Employee; 

SELECT FirstName as Name, max(CAST((julianday('now') - julianday(BirthDate))/365 AS INTEGER)) as age 
    FROM Employee;