2017-05-28 64 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;