MYSQLは継続サインイン機能を実装しており、サインイン後1日経過すると最初から開始します(SQL文)

MYSQLは継続サインイン機能を実装しており、サインイン後1日経過すると最初から開始します(SQL文)

1. テストテーブルを作成する

テーブル `testsign` を作成します ( 
 `userid` int(5) デフォルト NULL, 
 `username` varchar(20) デフォルト NULL, 
 `signtime` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP、 
 `type` int(1) デフォルト '0' コメント '0はサインインデータ、1はサインイン日付辞書データを表します' 
) エンジン=InnoDB デフォルト文字セット=utf8

2. テストデータを挿入します。サインイン時間は5月21日から6月5日までです。ライブで記述できますが、ストアドプロシージャを記述する必要があります。私は怠け者です。3番目のポイントであるサインインデータを取得するためのコードに焦点を当てる必要があります。ハハ

`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-21 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-22 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-23 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-24 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-25 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-26 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-27 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-28 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-29 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-30 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-05-31 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-06-01 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-06-02 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-06-03 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-06-04 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値 ('72164','Dictionary','2017-06-05 00:00:00','1') を挿入します。 
`testsign` (`userid`, `username`, `signtime`, `type`) に値を挿入します('800675','Wu Xiaoshuang サインインデータ','2017-05-21 00:00:00','0'); 
`testsign` (`userid`, `username`, `signtime`, `type`) に値を挿入します('800675','Wu Xiaoshuang サインインデータ','2017-05-22 00:00:00','0'); 
`testsign` (`userid`, `username`, `signtime`, `type`) に値を挿入します('800675','Wu Xiaoshuang サインインデータ','2017-05-23 00:00:00','0'); 
`testsign` (`userid`, `username`, `signtime`, `type`) に値を挿入します('800675','Wu Xiaoshuang サインインデータ','2017-05-24 00:00:00','0'); 
`testsign` (`userid`, `username`, `signtime`, `type`) に値を挿入します('800675','Wu Xiaoshuang サインインデータ','2017-05-25 00:00:00','0'); 
`testsign` (`userid`, `username`, `signtime`, `type`) に値を挿入します('800675','Wu Xiaoshuang サインインデータ','2017-05-26 00:00:00','0');

3. 継続的なサインインデータを照会する

SELECT * FROM testsign WHERE TYPE=0 AND 
 DATE_FORMAT(符号時刻,'%Y%m%d')>( 
 SELECT IFNULL(MAX(DATE_FORMAT(signtime,'%Y%m%d')),"20170520") FROM testsign WHERE TYPE=1 
 AND DATE_FORMAT(signtime,'%Y%m%d')<=DATE_ADD(NOW(), INTERVAL -1 DAY) 
 DATE_FORMAT(signtime,'%Y%m%d') が ( ではない 
    TYPE=0 かつ userid=800675 の場合、testsign から DATE_FORMAT(signtime,'%Y%m%d') を選択 
    ) 
 ) 
 AND DATE_FORMAT(signtime,'%Y%m%d')<='20170605' 
 かつユーザーID=800675

中断のないデータ

23日のデータを削除し、24日からカウントを開始し、3日連続で署名します

上記は、編集者が紹介した継続サインイン機能のMYSQL実装です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • SQLSERVERはログインしたユーザーのログイン時間を記録する(自作スクリプト)
  • MySQL で 2 つの日付間の連続ログイン日数の最大数を照会する方法
  • MySQL で 2 つの日付間の連続ログイン日数の最大数を照会する方法
  • ユーザーの連続ログイン日数を調べるSQLクエリステートメント

<<:  CentOS 7 で PHP 5.4 を 5.6 にアップグレードする方法の簡単な分析

>>:  Vue プロジェクト コード分割ソリューション

推薦する

MySQL ツリー構造テーブルの設計と最適化に関する簡単な説明

序文多くの管理・オフィスシステムでは、ツリー構造がいたるところで見られます。たとえば、「部門」や「機...

Webpack3+React16コード分割の実装

プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...

CSS ワールド - コード実践: 画像の Alt 情報の表示

ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...

CSS でハートを描く 3 つの方法

以下では、CSS を使用してハートの形を描く 3 つの方法を紹介します。実装プロセスは非常にシンプル...

MySQLは「order by」がどのように機能するかを簡単に理解します

並べ替えの場合、order by は非常に頻繁に使用するキーワードです。インデックスに関するこれまで...

jQuery タグセレクターの適用例の詳細な説明

この記事では、jQueryタグセレクターアプリケーションの具体的なコードを例として紹介します。具体的...

Docker ベースの ELK ログ システムを構築する方法

背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーショ...

JavaScript配列の簡単な紹介

目次配列の紹介配列リテラル2次元配列要約する配列の紹介配列- Arrayもオブジェクトですこれは通常...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

ネガティブマージン関数の紹介と使用方法の概要

1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...

CSS3で実装されたサムネイルホバー効果

成果を達成する実装コードhtml <ヘッダー> <h1><em>...

CSS スティッキーレイアウトを使用してヘッダーを上部に配置する方法

適用シナリオ:新しい要件の 1 つはアンケート調査を行うことですが、必然的に多くの質問が含まれ、1 ...

TypeScript 学習ノート: 型の絞り込み

目次序文型推論真理値の絞り込み平等の縮小演算子の絞り込みインスタンスの絞り込み狭まりの本質ユニオン型...

JavaScript が Xiaomi のカルーセル効果を模倣

この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...