6

usersテーブルには、ユーザーの生年月日を次の形式で保存するというフィールドがありdobます。

1959-04-02

とにかく、18 歳と 19 歳のすべてのユーザーを選択したいと思います。これは私のクエリです:

SELECT *
FROM `users`
WHERE dob BETWEEN '1993-10-30' AND '1994-10-30'

しかし、ほとんどが 18 歳と一部の (全員ではない) 19 歳のみが選択されているようです。データベースには多数のテスト ユーザーがいて、18 歳と 19 歳の数は同じです。しかし、このクエリでは、18 歳が約 90%、19 歳が約 10% となります。なんで?

4

3 に答える 3

4

I would advise something like:

SELECT *
FROM `users`
WHERE dob BETWEEN 
    CURDATE() - INTERVAL 18 YEAR 
    AND CURDATE() - INTERVAL 20 YEAR 

Technically that will include people who turn 20 today. You can change the interval to a DATE_ADD and be more precise if you'd like.

This is a bit cleaner, because you don't need to rework the two birthdays in PHP (or god forbid, manually) each time.

于 2012-10-30T21:01:55.250 に答える
4

18 歳から 19 歳までの人の生年月日は 2 年以上です。あなたのクエリは 1 年しかカバーしていません。ロジックを作り直すことを検討してください。

于 2012-10-30T20:50:28.053 に答える