84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
我有个平台是有签到功能的,我需要判断这个用户连续在这个平台上签到多少天了 给他不同的积分。例如今天是4月26号,从4月15号开始每天都签到了,那就是连续签到12天,4月13号也签到了,但是4月14号没签到,mysql语句怎么写呢
通常、連続サインインの日数が保存されない場合、以前に行った方法の 1 つは、サインインをタイムスタンプとともに保存してから、サインインのタイムスタンプを取得することです。 1 か月分を取得し (サインインがいっぱいになった月の場合は、前月のものを取得します)、PHP で日数をループして計算します。その後、この方法では時間がかかるため、チェックイン日を個別に記録しました
データベース設計の問題 連続した日数をカウントする必要があるため、毎日 1 つの項目を記録することは不可能です (銀行が任意の日数分のユーザーの残高を記録していることを想像してください) 会計方法は年次累積アルゴリズムと呼ばれます。つまり、ある時点を別の時点まで記録します。ある時点の残高は変更されません (継続的)。 テーブルのデザインは、おおよそ次のとおりです。
終了時間 - 開始時間 = 日数。ポイントの変換は税金と同じで、ボーナスを計算するだけです。
ビジネス ルールでは、連続 x 日間に付与されるポイント数に上限を設ける必要があります。たとえば、連続 20 日以上の場合に付与されるポイント数はいくらですか。
次に、この x を覚えておきましょう。db select * from tb where uid = 10086 order by dt desc limit x
その後、プログラムの連続日数の最大値を判断し、対応するスコアを加算します。
通常、連続サインインの日数が保存されない場合、以前に行った方法の 1 つは、サインインをタイムスタンプとともに保存してから、サインインのタイムスタンプを取得することです。 1 か月分を取得し (サインインがいっぱいになった月の場合は、前月のものを取得します)、PHP で日数をループして計算します。その後、この方法では時間がかかるため、チェックイン日を個別に記録しました
データベース設計の問題
連続した日数をカウントする必要があるため、毎日 1 つの項目を記録することは不可能です (銀行が任意の日数分のユーザーの残高を記録していることを想像してください)
会計方法は年次累積アルゴリズムと呼ばれます。つまり、ある時点を別の時点まで記録します。ある時点の残高は変更されません (継続的)。
テーブルのデザインは、おおよそ次のとおりです。
終了時間 - 開始時間 = 日数。ポイントの変換は税金と同じで、ボーナスを計算するだけです。
ビジネス ルールでは、連続 x 日間に付与されるポイント数に上限を設ける必要があります。たとえば、連続 20 日以上の場合に付与されるポイント数はいくらですか。
次に、この x を覚えておきましょう。db select * from tb where uid = 10086 order by dt desc limit x
その後、プログラムの連続日数の最大値を判断し、対応するスコアを加算します。