ホームページ >バックエンド開発 >PHPチュートリアル >SQL ページング クエリ データを誕生日に基づいて近いものから遠いものに並べ替えるにはどうすればよいでしょうか?
ユーザーデータテーブルがありますuser_table
里面有个 birthday
字段存放用户出生日期(如 1994-01-01、1996-07-1
)対応するタイムスタンプデータ
ここで、最近の誕生日から遠い誕生日までの順序に従ってページ内のユーザー データを検索する必要があります
たとえば、今日が 2016-07-28
の場合、誕生日の日付は 2016-07-28
的话,生日日期分别为 1995-07-30
、1993-11-31
、1997-08-29
、1995-07-27
的四个用户数据排序后就是 1995-07-30
、1997-08-29
、1993-11-31
、1995-07-27
1995 です-07-30
、 1993-11-31
、 1997-08-29
、 1995-07-27
を並べ替えた後、
1995-07-30、または、誕生日を保存するデータテーブルの構造を適切に変更するにはどうすればよいでしょうか?1997-08-29
、1993-11-31
、>1995-07-27
そのようなクエリ条件を満たす SQL ステートメントを記述するにはどうすればよいでしょうか?
返信内容:user_table
里面有个 birthday
字段存放用户出生日期(如 1994-01-01、1996-07-1
)対応するタイムスタンプデータ
2016-07-28
的话,生日日期分别为 1995-07-30
、1993-11-31
、1997-08-29
、1995-07-27
的四个用户数据排序后就是 1995-07-30
、1997-08-29
、1993-11-31
、1995-07-27
ここで、最近の誕生日から遠い誕生日までの順序に従ってページ内のユーザー データを検索する必要があります
2016-07-28
の場合、誕生日の日付は 1995 です-07-30
、1993-11-31
、1997-08-29
、1995-07-27
を並べ替えた後、の 4 つのユーザー データ、それは
1995-07-30、1997-08-29
、1993-11-31
、>1995-07-27
そのようなクエリ条件を満たす SQL ステートメントを記述するにはどうすればよいでしょうか?
または、誕生日を保存するデータテーブルの構造に適切な変更を行うにはどうすればよいでしょうか?
データ量やパフォーマンスの問題を考慮しないシンプルなアプローチ:
クエリ時に 2 回クエリを実行します。最初に day_of_year フィールドが現在の値より大きいかどうかクエリし、次にこのフィールドが現在の値より小さいかどうかをクエリします。day_of_year:
前に 1 つ少ない条件を見てください
mysql は、時刻 1995-07-30 をその年の日付 DAYOFYEAR('1995-07-30') に変換し、その年の今日の日を減算し、その差を取得して、までに注文してください。
誕生日が同じ月日の場合は、年ごとに昇順に並べ替えることができます。
リーリー
アイデア: 実際にやっていることは、減算後に月ごとに並べ替え、減算後に日ごとに並べ替えることです
リーリー
上記のコードは、現在の月から1か月後の誕生日データを取得し、昇順に並べ替えることができます。後者を取り出すには、繰り返しを書くだけです。
リーリー
1995-07-30
1997-08-29