mysql date_format curdate()queryとの比較
-
20-09-2019 - |
質問
やあみんな、私はM/D/Yとして保存され、期限切れになっているREC_DATE(VARCHAR)を持っているデータベースからすべてのレコードを取得しようとしています(そのように、以下 curdate()
)、そしてこの呼び出しは私に私が望むものを私に与えていません:
SELECT member_id,
status,
DATE_FORMAT(STR_TO_DATE(rec_date, '%m/%d/%Y'), '%Y-%m-%d') AS rec
FROM members
WHERE rec_date > CURDATE()
AND status = '1'
私は明らかに何か間違ったことをしているので、あなたは助けることができますか?
解決
Zerkmsには、可能な限り適切なデータ型を使用する必要があることに同意します。それ以外の場合は、SubQueryを使用して、文字列/Varcharを最初に日付/時刻データ型に変換する必要があります。
SELECT x.member_id,
x.status,
DATE_FORMAT(x.rec_dt, '%Y-%m-%d')
FROM (SELECT m.member_id,
m.status,
STR_TO_DATE(m.rec_date, '%m/%d/%Y') AS rec_dt
FROM MEMBERS m
WHERE m.status = '1') x
WHERE x.rec_dt < CURDATE()
他のヒント
正しい方法 - 適切なフィールドタイプにデータを保存することです。 「varchar」の代わりに「日付」タイプを使用します。
とにかく - date_formatを使用してrec_dateをフォーマットして、句を右に文字列に入れ、それをcurdate()と比較できます。
所属していません StackOverflow