這是我的 MySQL 查詢,用于從出生日期回傳年齡
SELECT
PensionerDOB,
YEAR( CURDATE() ) AS Year,
DATE_FORMAT( STR_TO_DATE( PensionerDOB, '%d-%M-%Y' ), '%Y') AS age,
YEAR( CURDATE() ) - DATE_FORMAT( STR_TO_DATE(`PensionerDOB`, '%d-%M-%Y' ), '%Y' ) AS differenage
FROM
`pensionerbasicdata`
執行查詢。但它回傳的年齡差異為負值。

uj5u.com熱心網友回復:
SELECT *,
TIMESTAMPDIFF(year, STR_TO_DATE(CONCAT(SUBSTRING_INDEX(PensionerDOB, '-', 2), '-19', SUBSTRING_INDEX(PensionerDOB, '-', -1)), '%d-%M-%Y'), CURRENT_DATE) AS age
FROM pensionerbasicdata
固定 2 位數年份的問題 -所有年份都被視為19xx.
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f356258c99b20d13b0c4e2349b801f18
uj5u.com熱心網友回復:
試試這個它會起作用,
詢問,
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(),YourDateofBirth)), '%Y') 0 AS Age from AgeCalculationFromDatetime
uj5u.com熱心網友回復:
兩位數的年份是有問題的。MySQL 檔案。
作為 '0' 到 '99' 范圍內的 1 位或 2 位字串。MySQL 將“0”到“69”和“70”到“99”范圍內的值轉換為 2000 到 2069 和 1970 到 1999 范圍內的 YEAR 值。
作為 0 到 99 范圍內的 1 位或 2 位數字。 MySQL 將 1 到 69 和 70 到 99 范圍內的值轉換為 2001 到 2069 和 1970 到 1999 范圍內的 YEAR 值。
SELECT str_to_date('21-Dec-69', '%d-%M-%y')
> 2069-12-21
SELECT str_to_date('21-Dec-70', '%d-%M-%y')
> 1970-12-21
uj5u.com熱心網友回復:
這里 Mysql 沒有按預期決議兩位數的年份.. 而不是 1945-它回傳 2065,1953-它回傳 2053。請按照此鏈接決議帶有兩位數的日期。 how-to-use-str-to-date-mysql-to-parse-two-digit-year-correctly
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383447.html
