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

MySQLで現在の日付と日付フィールドの間の日数を取得する方法

MySQLでは、DATEDIFF()関数とSTR_TO_DATE()関数を組み合わせることで、現在の日付とテーブル内の日付フィールドとの間の日数を簡単に計算できます。ここでは、具体的なサンプルを使ってその手順を詳しく解説します。

基本構文

現在の日付と日付フィールドの間の日数を取得するには、以下の構文を使用します。

SELECT DATEDIFF(CURDATE(),STR_TO_DATE(yourColumnName, '%d-%m-%Y')) AS anyAliasName FROM yourTableName;

この構文では、CURDATE()が現在の日付を返し、STR_TO_DATE()が文字列として保存された日付を「%d-%m-%Y」(日-月-年)形式で解析してDATE型に変換します。そしてDATEDIFF()が両者の差分を日数で返します。

サンプルテーブルの作成

上記の構文を理解するために、まずテーブルを作成しましょう。テーブルを作成するクエリは以下のとおりです。

mysql> create table DateDifferenceDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ArrivalDate varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)

レコードの挿入

次に、INSERTコマンドを使用してテーブルにいくつかのレコードを挿入します。クエリは以下のとおりです。

mysql> insert into DateDifferenceDemo(ArrivalDate) values('12-10-2011');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DateDifferenceDemo(ArrivalDate) values('01-12-2013');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DateDifferenceDemo(ArrivalDate) values('31-10-2014');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DateDifferenceDemo(ArrivalDate) values('12-04-2016');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DateDifferenceDemo(ArrivalDate) values('20-08-2018');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DateDifferenceDemo(ArrivalDate) values('11-03-2019');
Query OK, 1 row affected (0.07 sec)

レコードの確認

SELECT文を使用して、テーブル内のすべてのレコードを表示します。

mysql> select *from DateDifferenceDemo;

出力結果は以下のとおりです。

+----+-------------+
| Id | ArrivalDate |
+----+-------------+
| 1  | 12-10-2011  |
| 2  | 01-12-2013  |
| 3  | 31-10-2014  |
| 4  | 12-04-2016  |
| 5  | 20-08-2018  |
| 6  | 11-03-2019  |
+----+-------------+
6 rows in set (0.00 sec)

現在の日付との日数差を取得する

それでは、現在の日付と日付フィールドの間の日数を取得するクエリを実行してみましょう。

mysql> SELECT DATEDIFF(CURDATE(),STR_TO_DATE(ArrivalDate, '%d-%m-%Y')) AS NumberOfDays from DateDifferenceDemo;

出力結果は以下のとおりです。

+--------------+
| NumberOfDays |
+--------------+
| 2708         |
| 1927         |
| 1593         |
| 1064         |
| 204          |
| 1            |
+--------------+
6 rows in set (0.00 sec)

ポイントまとめ

  • DATEDIFF(日付1, 日付2):日付1から日付2を引いた日数を返します。
  • CURDATE():現在の日付を「YYYY-MM-DD」形式で返します。
  • STR_TO_DATE(文字列, 形式):文字列を指定したフォーマットに従って日付値に変換します。今回の例では「%d-%m-%Y」=「日-月-年」形式を指定しています。

このように、varchar型など文字列として保存されている日付データでも、STR_TO_DATE()で適切な形式を指定して変換すれば、DATEDIFF()を使って正確な日数差を算出できます。保存されている日付の形式が異なる場合は、「%d-%m-%Y」の部分を実際のフォーマットに合わせて変更してください。

  1. Javaで現在の日付と時刻を取得する4つの方法をサンプルコード付きで解説

    Javaで現在の日付や時刻を取得する方法はいくつかあります。この記事では、代表的な4つの方法をサンプルコードと実行結果とともにわかりやすく解説します。 1. Dateクラスのコンストラクタを使用する java.util.Dateクラスの引数なしのコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。最も古典的でシンプルな方法です。 サンプルコード import java.util.Date; public class CreateDate {    public static void main(String args[]) {   &nbs

  2. Pythonで現在の日付と時刻を取得する方法|datetimeモジュールとstrftimeの使い方

    はじめにPythonでは、現在の日付や時刻を取得する方法がいくつかあります。最も手軽なのが標準ライブラリのdatetimeモジュールを使う方法です。このモジュールにはnow()関数が用意されており、これを呼び出すだけで現在の日付と時刻を簡単に取得できます。datetimeモジュールで現在日時を取得する基本例import datetime now = datetime.datetime.now() print(Current date and time: ) print(str(now))実行結果上記のコードを実行すると、次のような出力が得られます。2017-12-29 11:24:48.042