-1

MySQL で年の差を取得しようとしていますが、同じものを選択するとエラーが表示されます。

SELECT(
    DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT('birthdate', '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT('birthdate', '00-%m-%d')) AS age
) FROM register where 'reg_id' = user254

エラーは何ですか?

4

3 に答える 3

3

年を差し引くだけでは実際の年齢はわかりません。つまり、すべての人が 1 月 1 日に生まれたかのようになります。datediff を実行してみてください:

SELECT FLOOR((DATEDIFF(NOW(),birthdate))/365)
FROM register 
WHERE reg_id = 'user254'

覚えておいてください: リテラル値 ('user254' や 'John' など) を引用符で囲みますが、テーブル名や列名を通常の引用符で囲むことはできません! それらには backtikcs (`) を使用する必要があります。

于 2012-08-21T08:40:59.613 に答える
0

これを試して:

SELECT ( YEAR(NOW()) - YEAR(birthdate) - 
(DATE_FORMAT(NOW(), '%m%d') < DATE_FORMAT(birthdate, '%m%d'))
AS age) FROM register WHERE 'reg_id' = user254
于 2012-08-21T08:41:08.613 に答える