ホームページ  >  記事  >  バックエンド開発  >  SQL ページング クエリ データを誕生日に基づいて近いものから遠いものに並べ替えるにはどうすればよいでしょうか?

SQL ページング クエリ データを誕生日に基づいて近いものから遠いものに並べ替えるにはどうすればよいでしょうか?

WBOY
WBOYオリジナル
2016-08-04 09:19:412187ブラウズ

ユーザーデータテーブルがありますuser_table 里面有个 birthday 字段存放用户出生日期(如 1994-01-01、1996-07-1)対応するタイムスタンプデータ

ここで、最近の誕生日から遠い誕生日までの順序に従ってページ内のユーザー データを検索する必要があります
たとえば、今日が 2016-07-28 の場合、誕生日の日付は 2016-07-28 的话,生日日期分别为
1995-07-301993-11-311997-08-291995-07-27
的四个用户数据排序后就是
1995-07-301997-08-291993-11-311995-07-271995 です-07-301993-11-311997-08-291995-07-27 を並べ替えた後、

の 4 つのユーザー データ、それは
1995-07-30、1997-08-291993-11-31 >1995-07-27


そのようなクエリ条件を満たす SQL ステートメントを記述するにはどうすればよいでしょうか?
または、誕生日を保存するデータテーブルの構造を適切に変更するにはどうすればよいでしょうか?

返信内容:user_table 里面有个 birthday 字段存放用户出生日期(如 1994-01-01、1996-07-1

ユーザーデータテーブルがあります

)対応するタイムスタンプデータ
2016-07-28 的话,生日日期分别为
1995-07-301993-11-311997-08-291995-07-27
的四个用户数据排序后就是
1995-07-301997-08-291993-11-311995-07-27ここで、最近の誕生日から遠い誕生日までの順序に従ってページ内のユーザー データを検索する必要があります

たとえば、今日が 2016-07-28 の場合、誕生日の日付は
1995 です-07-301993-11-311997-08-291995-07-27 を並べ替えた後、

の 4 つのユーザー データ、それは
1995-07-30、1997-08-291993-11-31 >1995-07-27

そのようなクエリ条件を満たす SQL ステートメントを記述するにはどうすればよいでしょうか?

または、誕生日を保存するデータテーブルの構造に適切な変更を行うにはどうすればよいでしょうか?

  1. データ量やパフォーマンスの問題を考慮しないシンプルなアプローチ:

    dayofyear の情報を保存するフィールドを追加します。たとえば、フィールド名が day_of_year の場合、挿入ステートメントは次のようになります。
  1. リーリー

クエリ時に 2 回クエリを実行します。最初に day_of_year フィールドが現在の値より大きいかどうかクエリし、次にこのフィールドが現在の値より小さいかどうかをクエリします。day_of_year:


で並べ替えます。 リーリー

前に 1 つ少ない条件を見てください

mysql は、時刻 1995-07-30 をその年の日付 DAYOFYEAR('1995-07-30') に変換し、その年の今日の日を減算し、その差を取得して、までに注文してください。

誕生日が同じ月日の場合は、年ごとに昇順に並べ替えることができます。

リーリー

アイデア: 実際にやっていることは、減算後に月ごとに並べ替え、減算後に日ごとに並べ替えることです

リーリー
上記のコードは、現在の月から1か月後の誕生日データを取得し、昇順に並べ替えることができます。後者を取り出すには、繰り返しを書くだけです。
リーリー
1995-07-30
1997-08-29

1993-11-31🎜1999-01-01🎜1995-07-27🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。