MySQLでビューを作成しようとしています。ユーザーの電子メール、姓、DOB、および現在の年齢を表示する必要があります。私は、21歳以上のユーザーのみを見せたいと思っています。MySQLで人が21を超えているかどうかを確認する方法
これは私が持っているものです。
CREATE VIEW 'valid_Users' AS
SELECT Persons.Email AS Email, Persons.FName + ' ' + Persons.LName AS Name, Persons.DOB AS Birth_Date, DATEDIFF(Persons.DOB, NOW()) AS Current_Age'
FROM Persons
WHERE DATEDIFF(Persons.DOB, NOW()) > 21;
問題がWhere句は明らかに正しい年齢ではない負の数を返すということです。どのように私は人の適切な年齢を決定するためにこのコードを編集するだろうか?
私は名前が機能していないことを知っています - まだ...しかし、ここにはいくつかの現在のデータのイメージがあります。
CREATE VIEW valid_Users AS
SELECT p.Email,
CONCAT(p.FName, ' ', p.LName) AS Name,
p.DOB AS BirthDate,
TIMESTAMPDIFF('year', p.DOB, CURDATE()) AS CurrentAge
FROM Persons p
WHERE p.DOB < CURDATE() - INTERVAL 21 YEARS;
単一引用符を削除します。 *文字列と日付の名前には一重引用符を使用します。さらに、あなたのクエリはMySQLではとにかく動作しません。あなたはむしろ混乱しているようです。 –
SELECT DATEDIFF(Persons.DOB、NOW())AS日を実行すると、何を手に入れますか? –
引数をDATEDIFFにスワップすることを検討しましたか? _...またはDATEDIFFが返す値について[docs](http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff)を見ていますか?_ – Uueerdo