這類作品:
SELECT *
FROM PatientDetails pd
WHERE DATEDIFF(CURRENT_DATE, STR_TO_DATE(pd.DOB, '%d-%m-%Y'))/365 < 19
分水嶺365天的日子將無法適應飛躍這意味着你將在4天內得到保證。你可以除以365.25,然後減去0.75。我想認爲佔了一切,但我從臀部拍了一下。我不確定是否會出現整數錯誤。我不確定MySQL如何處理隱式類型轉換。
我會更傾向於這樣做。從邏輯上講,它是「所有患者的19歲生日是在未來」:
SELECT *
FROM PatientDetails pd
WHERE DATE_ADD(STR_TO_DATE(pd.DOB, '%d-%m-%Y'), INTERVAL 19 YEAR) > CURDATE()
然而,這個確切的問題是解決,並在MySQL documentation for date calculations解釋,但似乎有種屁股向後對我說:
SELECT name, birth, CURDATE(),
(YEAR(CURDATE())-YEAR(birth))
- (RIGHT(CURDATE(),5)<RIGHT(birth,5))
AS age
FROM pet
這實際上不起作用 –
它有什麼問題? –
找不到結果。我知道這確實會返回值。 SELECT DATEDIFF(CURRENT_DATE,STR_TO_DATE(p.DOB,'%d-%m-%Y'))/ 365 AS ageInYears FROM patientdetails p –