要得到確切的年齡,您需要考慮年,月和日。
讓學生,年齡在幾年分組的數量,你的代碼將是:
SELECT
Datediff(yyyy,DOB, CURRENT_TIMESTAMP)
+ Case
When
(
Datepart(mm,DOB) > Datepart(mm,CURRENT_TIMESTAMP)
Or (
Datepart(mm,DOB) = Datepart(mm,CURRENT_TIMESTAMP)
And Datepart(dd,DOB) > Datepart(dd,CURRENT_TIMESTAMP)
)
)
Then -1
Else 0
End As Age,
Count(*)
FROM
db.student
WHERE
registration_date >= '2010-01-01' SELECT
Datediff(yyyy,DOB, CURRENT_TIMESTAMP)
+ Case
When
(
Datepart(mm,DOB) > Datepart(mm,CURRENT_TIMESTAMP)
Or (
Datepart(mm,DOB) = Datepart(mm,CURRENT_TIMESTAMP)
And Datepart(dd,DOB) > Datepart(dd,CURRENT_TIMESTAMP)
)
)
Then -1
Else 0
End As Age,
Count(*)
FROM
db.student
WHERE
registration_date >= '2010-01-01'
GROUP BY
Datediff(yyyy,DOB, CURRENT_TIMESTAMP)
+ Case
When
(
Datepart(mm,DOB) > Datepart(mm,CURRENT_TIMESTAMP)
Or (
Datepart(mm,DOB) = Datepart(mm,CURRENT_TIMESTAMP)
And Datepart(dd,DOB) > Datepart(dd,CURRENT_TIMESTAMP)
)
)
Then -1
Else 0
End
你不能只用'DATEDIFF(YEAR,...)'來計算年齡,因爲這是出生12月31日一個人就擁有1年機構,如果你計算1月1日年齡 – Lamak 2015-01-15 16:20:46