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が基礎データ構造としてB+ツリーを使用する理由

MySQL の基盤となるデータ構造が B+ ツリーであることは誰もが知っていますが、ではなぜ赤黒ツリ...

MySQL における tinyint と int の違いの詳細な説明

質問: int(1) と tinyint(1) の違いは何ですか?このような設計では、いずれにしても...

Dockerを使用してSpringBootプロジェクトをデプロイする方法

Docker テクノロジの開発により、マイクロサービスの実装にさらに便利な環境が提供されます。Doc...

JDカルーセル効果を実現するための純粋なHTMLとCSS

JD カルーセルは、動的な効果を追加せず、主に位置決めの知識を使用して、純粋な HTML と CS...

CSSはラジオをクリックして2つの画像スタイルを切り替えますが、複数のラジオのうち1つだけをチェックできます。

クリックされたボタンには赤い画像スタイルを実装し、選択されていない他のボタンには灰色の画像スタイルを...

MySQL のデバッグと最適化に関する 101 のヒントを共有する

MySQL は強力なオープンソース データベースです。データベース駆動型アプリケーションの数が増える...

Linux で Golang をインストールする方法

Go は、シンプルで信頼性が高く、効率的なソフトウェアを簡単に構築できるオープンソース プログラミン...

Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

目次1. インストールの準備1. Linux関連情報の表示(Linuxコマンドライン操作) 2. M...

node.jsのインストールとHbuilderXの設定の詳細な説明

npm インストールチュートリアル: 1. Node.jsインストールパッケージをダウンロードする公...

Centos7 への mysql8.0rpm のインストール チュートリアル

まず、図をダウンロードしてください 1. まず、centos7に付属しているmariadbをアンイン...

ウェブページ作成のヒントのまとめ

序文この記事は主に、日常の Web ページ制作で遭遇する問題解決スキルの一部をまとめ、皆さんの参考と...

MySQLメモリストレージエンジンに関する知識

メモリストレージエンジンに関する知識ポイントメモリ ストレージ エンジンは日常業務ではほとんど使用さ...

ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明

2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...

シェルで文字列内のスペースや指定された文字を削除する方法

インターネット上には、正しい方法であっても、使用しても正しい結果が得られない方法が数多くあります。正...

Ubuntu 16.04にJenkinsをインストールするための詳細な手順

1. 前提条件JDKがインストールされましたecho $PATHソフトリンクを作成し、JDKのインス...