119

今日の日付を見て、その日にサインアップした結果のみを返す mysql select ステートメントを実行しようとしています。現在、次のことを試していますが、うまくいかないようです。

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
    FROM users 
    WHERE users.signup_date = CURDATE()

私は自分のSELECT声明をこれに変更しました、ありがとう。

SELECT id FROM users WHERE DATE(signup_date) = CURDATE()

4

5 に答える 5

235
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
FROM users 
WHERE DATE(signup_date) = CURDATE()
于 2012-10-01T17:07:27.457 に答える
38

This query will use index if you have it for signup_date field

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
    FROM users 
    WHERE signup_date >= CURDATE() && signup_date < (CURDATE() + INTERVAL 1 DAY)
于 2012-10-01T17:09:02.710 に答える
15

にフォーマットを追加する必要があるようですWHERE

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
FROM users 
WHERE DATE_FORMAT(users.signup_date, '%Y-%m-%d') = CURDATE()

デモで SQL Fiddle を参照してください

于 2012-10-01T17:07:21.353 に答える