MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL DATEDIFF()関数によって返される負の値を無視するにはどうすればよいですか?


DATEDIFF()関数は、2つの日付間の日数の差を取得するために使用されることがわかっています。したがって、負の値を返す可能性も十分にあります。

mysql> select * from differ;
+------------+-------------+
| OrderDate  | WorkingDate |
+------------+-------------+
| 2017-10-22 | 2017-10-29  |
| 2017-10-25 | 2017-10-30  |
| 2017-10-25 | 2017-11-30  |
+------------+-------------+
3 rows in set (0.00 sec)

上記のクエリは、テーブル「differ」から値を返します。ここで、誰かがOrderDateとWorkingDateの違いを取得したい場合、出力は次のように負になります-

mysql> Select DATEDIFF(OrderDate, WorkingDate)AS 'DIFFERENCE IN DAYS' from differ;
+--------------------+
| DIFFERENCE IN DAYS |
+--------------------+
|                 -7 |
|                 -5 |
|                -36 |
+--------------------+
3 rows in set (0.00 sec)

ただし、MySQL ABS()関数を使用してこれらの負の値を無視することができ、次のように実行できます-

mysql> Select ABS(DATEDIFF(OrderDate, WorkingDate))AS 'DIFFERENCE IN DAYS' from differ;
+--------------------+
| DIFFERENCE IN DAYS |
+--------------------+
|                  7 |
|                  5 |
|                 36 |
+--------------------+
3 rows in set (0.00 sec)

  1. MySQLで同じ列値を持つ行を返す方法は?

    これにはGROUPBY句を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> StudentId int,    -> StudentMarks int    -> ); Query OK, 0 rows affected (4.71 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(23,58);

  2. 現在の日付と参加日の差を返すMySQLDATE関数

    最初に、現在の日付を見つけ、DATEDIFF()を使用して参加日と現在の日付の差を取得します。 現在の日付は次のとおりです- mysql> select curdate(); +------------+ |  curdate() | +------------+ | 2019-10-26 | +------------+ 1 row in set (0.00 sec) まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> JoiningDate va