問題:
MySQLデータベースの2つの日付の差を日数で取得したいと考えています。
例:
私たちのデータベースには、food
id
列にデータがあります 、name
、purchase_date
、およびexpiration_date
。
id | 名前 | Purchase_date | expiration_date |
---|---|---|---|
1 | パン | 2019-07-20 | 2019-08-22 |
2 | バター | 2018-07-30 | 2019-08-10 |
3 | ミルク | 2019-01-12 | 2019-01-13 |
4 | ヨーグルト | 2019-02-25 | 2019-02-24 |
食品ごとに、商品の名前と、有効期限から購入日までの日数を取得しましょう。
解決策:
DATEDIFF()
を使用します 働き。作成するクエリは次のとおりです。
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
クエリの結果は次のとおりです。
name | 日 |
---|---|
パン | 33 |
バター | 376 |
ミルク | 1 |
ヨーグルト | -1 |
ディスカッション:
DATEDIFF()
を使用します MySQLデータベースの2つの日付の間の日数を取得する関数。この関数は2つの引数を取ります:
- 終了日。 (この例では、
expiration_date
列。) - 開始日。 (この例では、
purchase_date
列。)
これらの引数は、date / datetime値、date / datetime値を返す式、またはdatetimeまたはdateデータ型の列にすることができます。
この関数は、終了日から開始日を減算し、日数を整数として返します。この例では、バター 「2018-07-30」に購入されましたが、有効期限は「2019-08-10」でした。購入後、376日間食べることができました。ヨーグルトは古い製品として購入されたことに注意してください。日数の差は-1であり、購入日は有効期限よりも遅くなっています。