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」の部分を実際のフォーマットに合わせて変更してください。
-
Javaで現在の日付と時刻を取得する4つの方法をサンプルコード付きで解説
Javaで現在の日付や時刻を取得する方法はいくつかあります。この記事では、代表的な4つの方法をサンプルコードと実行結果とともにわかりやすく解説します。 1. Dateクラスのコンストラクタを使用する java.util.Dateクラスの引数なしのコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。最も古典的でシンプルな方法です。 サンプルコード import java.util.Date; public class CreateDate { public static void main(String args[]) { &nbs
-
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