MySQL の時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

MySQL の時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

SQL ステートメント、特にストアド プロシージャを記述する場合、日付と時刻の比較と判断を頻繁に使用します。ここでは、これら 2 つの時間差比較関数の使用方法の例を示します。

datediff 関数は日数の差を返すもので、時間、分、秒にローカライズすることはできません。

-- 2 日の差 select datediff('2018-03-22 09:00:00', '2018-03-20 07:00:00');

TIMESTAMPDIFF 関数にはパラメータ設定があり、日 (DAY)、時間 (HOUR)、分 (MINUTE)、秒 (SECOND) の精度を指定できます。datediff 関数よりも柔軟に使用できます。 2つの時間を比較するときは、小さい方を前に、大きい方を後ろに置きます。

--1 日の差 select TIMESTAMPDIFF(DAY, '2018-03-20 23:59:00', '2015-03-22 00:00:00');
-- 差は 49 時間です select TIMESTAMPDIFF(HOUR, '2018-03-20 09:00:00', '2018-03-22 10:00:00');
-- 差は 2940 分です select TIMESTAMPDIFF(MINUTE, '2018-03-20 09:00:00', '2018-03-22 10:00:00');

-- 差は 176400 秒です select TIMESTAMPDIFF(SECOND, '2018-03-20 09:00:00', '2018-03-22 10:00:00');

ストアド プロシージャの記述方法:

注: var_committime は前回の業務で取得した比較に必要な時間です。

-- 現在の時刻を取得します。SET var_current_time = CONCAT(CURDATE(),' ',CURTIME());
-- 時間の比較 SET var_time_diff = TIMESTAMPDIFF(MINUTE, var_committime, var_current_time);

 
-- 未レビュー契約が 48 時間以上処理されていないかどうかを判断します。処理されていない場合は、後続の論理処理を実行し、そうでない場合は処理しません。
IF (var_time_diff > 2880) の場合

-- 関連するビジネスロジック処理 END IF;

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)
  • 実用的な MySQL + PostgreSQL バッチ挿入更新 insertOrUpdate
  • MYSQL row_number() および over() 関数の詳細な使用方法
  • MySQL の暗黙的な型変換によって発生するインデックス障害の解決策
  • MySQLデータクエリが多すぎるとOOMが発生するかどうかについての簡単な議論
  • Django は MySQL マスター スレーブを構築して読み取りと書き込みの分離を実現します
  • MySQL マルチテーブル結合クエリの詳細な説明
  • MySQL における TIMESTAMPDIFF ケースの詳細な説明

<<:  Dockerコンテナデータをコピーしてバックアップする方法の詳細な説明

>>:  Vue カスタム オプション時間カレンダー コンポーネント

推薦する

Reactで例外を適切にキャプチャする方法

目次序文エラー境界エラー境界を超えてトライ/キャッチwindow.onerror、エラーイベント未処...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...

line-height=height要素の高さだがテキストが垂直方向に中央揃えされない問題を解決する

まず、行の高さが要素の高さと等しい場合にテキストが垂直方向に中央揃えにならない理由を説明します。実際...

Docker に ElasticSearch をインストールする方法を 1 つの記事で解説

目次序文1. Dockerをインストールする2. ElasticSearchをインストールする3. ...

MySQLで重複行を削除する方法

SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

Docker が PostgreSQL を起動するときに複数のデータベースを作成するためのソリューション

1 はじめに「DockerでPostgreSQLを起動する方法といくつかの接続ツールのおすすめ」の記...

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

mysql はインデックスを無効にしますか?

mysql の IN はインデックスを無効にしますか?しませんよ! 結果をご覧ください: mysq...

Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル

目次1. Dockerをインストールする2. influxDBをインストールして設定する3. Gra...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

実行中の Docker コンテナにボリュームを動的に追加する方法

以前、Docker コンテナの起動後にボリュームをマウントできるかどうか尋ねられたことがあります。m...

js配列のfind、some、filter、reduceの違いの詳細な説明

Array の filter、find、some、reduce メソッドの違いを区別し、使用シナリオ...

vue フロントエンド HbuliderEslint リアルタイム検証 自動修復設定

目次HBuilderX での ESLint プラグインのインストールカスタム eslint-js ル...

純粋な CSS3+DIV で小さな三角形の境界線効果を実現するためのサンプル コード

具体的なコードは次のとおりです。 HTMLコードは次のとおりです <div class=&qu...