mysqlの2つの日付の差の日数を取得するにはどうすればよいですか?


162

MySQLの2、3の日付に含まれる日数を取得する必要があります。

例えば:

  • チェックイン日は 12-04-2010
  • チェックアウト日 15-04-2010

日差は3になります

回答:


261

DATEDIFF関数についてはどうですか?

マニュアルのページを引用する:

DATEDIFF()は、ある日付から別の日付までの日数で表されるexpr1 – expr2を返します。expr1とexpr2は、日付または日付と時刻の式です。値の日付部分のみが計算に使用されます


あなたの場合、あなたが使うでしょう:

mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
|                                    3 | 
+--------------------------------------+
1 row in set (0,00 sec)

ただし、日付はのように記述する必要があります。投稿した日付YYYY-MM-DDとはDD-MM-YYYY異なります。


ええ、私が質問したときの日付形式を忘れました; pありがとうございます
Audel

4
PS YYYY-MM-DDはISO 8601規格なので、誰もがこれを使用する必要があります。とても実用的です。
ErnestasStankevičius16年

4
:メソッドの最初の引数は2番目の引数よりも大きくなければなりませんdatediff()。そうでない場合、負の値が返されます。
Shashanth 2017年

38

2つの日付の間の完全な24時間をカウントしたい場合、datediffが誤った値を返す可能性があることに注意してください。

ドキュメントの状態として:

値の日付部分のみが計算に使用されます。

その結果

select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')

期待される0ではなく1を返します。

ソリューションが使用されていますselect timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00'); (datediffと比較して引数の順序が逆であることに注意してください)。

いくつかの例:

  • select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00'); 0を返します
  • select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00'); 1を返します
  • select timestampdiff(DAY, '2016-04-13 11:00:00', now()); 2016-04-13 11:00:00から現在までの完全な24時間の日数を返します

最初はdatediffが予期しないまたは間違っているように見える値を返す理由が最初ははっきりしないので、それが誰かを助けることを願っています。


datediff()との間で引数が逆転しているのは奇妙ですtimestampdiff()
ビリーノア2018



5

現在の日付から宛先の日付までの日数を取得します

 SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;

出力

日々

 335

2
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM  membership_dates md

出力::

id  entity_id    start_date            end_date             days

1   1236      2018-01-16 00:00:00     2018-08-31 00:00:00    227
2   2876      2015-06-26 00:00:00     2019-06-30 00:00:00   1465
3   3880      1990-06-05 00:00:00     2018-07-04 00:00:00   10256
4   3882      1993-07-05 00:00:00     2018-07-04 00:00:00   9130

それが将来誰かを助けることを願って

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.