mysqlで時差を確認する方法

青灯夜游
リリース: 2021-12-28 09:08:53
オリジナル
50664 人が閲覧しました

時差を見つけるための Mysql メソッド: 1. TIMEDIFF() 関数、構文 "TIMEDIFF(dt1, dt2);" を使用します; 2. IMESTAMPDIFF() 関数、構文 "TIMESTAMPDIFF(unit) を使用します。 ,開始,終了); "。

mysqlで時差を確認する方法

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql は時間差を見つけます

  • timediff() 関数 - 2 つの TIME または DATETIME 値の差を計算します。

  • timestampdiff() 関数 - 2 つの DATE 値または DATETIME 値の差を計算します。

MySQL TIMEDIFF 関数の概要

TIMEDIFF2 つの TIME または DATETIME 値の差を返します。 TIMEDIFF 関数の次の構文を参照してください。

TIMEDIFF(dt1, dt2);
ログイン後にコピー

TIMEDIFF この関数は、同じ型である必要がある 2 つのパラメータ、つまり TIME または DATETIME を受け入れます。 TIMEDIFF 関数は、時間値として表現された dt1 - dt2 の結果を返します。

TIMEDIFF 関数は TIME 値を返すため、その結果は -838:59:59 から ## の範囲に限定されます。 #838: 59:59TIME の値の範囲内です。

MySQL TIMEDIFF 関数の例

2 つの時間値の差を計算する例を見てみましょう。

mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff;
+----------+
| diff     |
+----------+
| 02:00:00 |
+----------+
1 row in set
ログイン後にコピー
この例では、

12:00:0010:00:00 の差を次のように計算しました: 02: 00:00

次の例では、2 つの

DATETIME 値の差を計算します。

mysql> SELECT TIMEDIFF('2010-01-01 01:00:00', '2010-01-02 01:00:00') diff;
+-----------+
| diff      |
+-----------+
| -24:00:00 |
+-----------+
1 row in set
ログイン後にコピー
どちらかの引数が

NULL の場合、TIMEDIFF関数は NULL を返します。

mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)
ログイン後にコピー
異なるタイプの 2 つのパラメータ (1 つは

DATETIME、もう 1 つは TIME) を渡すと、TIMEDIFF 関数は ## も返します。 # ヌル###。

mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set
ログイン後にコピー
MySQL TIMESTAMPDIFF 関数の概要

次に、
TIMESTAMPDIFF

関数の構文について説明します。

TIMESTAMPDIFF(unit,begin,end);
ログイン後にコピー
TIMESTAMPDIFF 関数は

begin-end の結果を返します。beginendDATE です。 または DATETIME 式。 TIMESTAMPDIFF

関数では、引数に混合型を使用できます。たとえば、

beginDATE 値で、end## は値です。 DATETIME 値を指定できます。 DATE 値が使用されている場合、TIMESTAMPDIFF 関数は、時刻部分 "00:00:00"## を持つ DATETIME 値として扱います。 #。 unit パラメーターは、(end-begin

) の結果を決定するために使用される単位であり、整数で表されます。有効な単位は次のとおりです:

MICROSECONDSECOND

    MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • #MySQL TIMESTAMPDIFF 関数の例

次の例は、2018-01-012018-06-01 の差を月の値として返します。違いは、以下に示すように、

unit

パラメータを MONTH から DAY に変更するだけです。

mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result;
+--------+
| result |
+--------+
|      5 |
+--------+
1 row in set
ログイン後にコピー

次のステートメントは 2 つの DATETIME を返します。 分単位の差の値: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mysql&gt; SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ |    151 | +--------+ 1 row in set</pre><div class="contentsignin">ログイン後にコピー</div></div> TIMESTAMPDIFF は、

unit

パラメーターに関連付けられた時間の部分のみを考慮することに注意してください。以下の例を参照してください: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mysql&gt; SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result; +--------+ | result | +--------+ |     45 | +--------+ 1 row in set</pre><div class="contentsignin">ログイン後にコピー</div></div>その差は 45 分 59 秒であるはずです。ただし、

unit

パラメーターを MINUTE として渡したため、関数は予想どおり 45 分を返します。

MINUTE

の代わりに SECOND が使用される場合、TIMESTAMPDIFF 関数は、次に示すように

SECOND

の部分を考慮します。次の例:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mysql&gt; SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ |     45 | +--------+ 1 row in set</pre><div class="contentsignin">ログイン後にコピー</div></div>注: 45 分 59 秒 = 45×60 59 (秒) = 2759 秒MySQL TIMESTAMPDIFF 関数を使用して、年齢を計算します

最初の

では、デモ用に
persons

という名前の新しいテーブルを作成します。

mysql> SELECT TIMESTAMPDIFF(SECOND, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result;
+--------+
| result |
+--------+
|   2759 |
+--------+
1 row in set
ログイン後にコピー

2 番目の

、いくつかの行を persons テーブルに挿入します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">USE testdb; CREATE TABLE persons (     id INT AUTO_INCREMENT PRIMARY KEY,     full_name VARCHAR(255) NOT NULL,     date_of_birth DATE NOT NULL );</pre><div class="contentsignin">ログイン後にコピー</div></div>

3 番目のステップ

を使用します。 TIMESTAMPDIFF を使用して、persons テーブル内の各人の年齢を計算します。

INSERT INTO persons(full_name, date_of_birth)
VALUES('John Doe', '1990-01-01'),
      ('David Taylor', '1989-06-06'),
      ('Peter Drucker', '1985-03-02'),
      ('Lily Minsu', '1992-05-05'),
      ('Mary William', '1995-12-01');
ログイン後にコピー

上記のクエリ ステートメントを実行すると、次の結果が得られます。

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        '2018-01-01') age
FROM
    persons;
ログイン後にコピー
このステートメントでは、 、2018-01-01 時点の年齢を計算します。現在の年齢を計算したい場合は、以下に示すように、リテラル値 '2018-01-01'

NOW

関数に置き換えます。上記のクエリ ステートメントを実行して、次の結果を取得します。

+----+---------------+---------------+-----+
| id | full_name     | date_of_birth | age |
+----+---------------+---------------+-----+
|  1 | John Doe      | 1990-01-01    |  28 |
|  2 | David Taylor  | 1989-06-06    |  28 |
|  3 | Peter Drucker | 1985-03-02    |  32 |
|  4 | Lily Minsu    | 1992-05-05    |  25 |
|  5 | Mary William  | 1995-12-01    |  22 |
+----+---------------+---------------+-----+
5 rows in set
ログイン後にコピー

[関連する推奨事項: mysql ビデオ チュートリアル]

以上がmysqlで時差を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート