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

MySQLのDATEDIFF関数で現在の日付と入社日の差(日数)を求める方法

MySQLでは、DATEDIFF()関数を使うことで、2つの日付の差を日数で簡単に計算できます。この記事では、まずCURDATE()関数で現在の日付を取得し、その後DATEDIFF()関数を使って入社日(JoiningDate)と現在日付の差を求める手順を解説します。

現在の日付を確認する

現在の日付はCURDATE()関数で以下のように取得できます。

mysql> select curdate();
+------------+
|  curdate() |
+------------+
| 2019-10-26 |
+------------+
1 row in set (0.00 sec)

テーブルを作成する

まず、サンプル用のテーブルを作成します。ここでは入社日をVARCHAR型の文字列として保存しています。

mysql> create table DemoTable
    -> (
    -> JoiningDate varchar(40)
    -> );
Query OK, 0 rows affected (0.61 sec)

レコードを挿入する

INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。日付は「日/月/年」の形式の文字列として登録しています。

mysql> insert into DemoTable values('10/10/1998');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('31/12/2010');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('01/01/2017');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('25/10/2019');
Query OK, 1 row affected (0.14 sec)

テーブルの内容を確認する

SELECT文でテーブルの全レコードを表示します。

mysql> select *from DemoTable;

以下のような出力が得られます。

+-------------+
| JoiningDate |
+-------------+
|  10/10/1998 |
|  31/12/2010 |
|  01/01/2017 |
|  25/10/2019 |
+-------------+
4 rows in set (0.00 sec)

現在の日付と入社日の差を求めるクエリ

文字列として保存された日付は、そのままDATEDIFF()に渡すことができません。そこでSTR_TO_DATE()関数を使って「%d/%m/%Y」形式の文字列を日付型に変換し、DATEDIFF()関数で現在の日付との差(日数)を計算します。

mysql> select datediff(curdate(),str_to_date(JoiningDate,'%d/%m/%Y')) from DemoTable;

以下のような出力が得られます。各行には、各入社日から現在の日付までの日数が表示されます。

+---------------------------------------------------------+
| datediff(curdate(),str_to_date(JoiningDate,'%d/%m/%Y')) |
+---------------------------------------------------------+
|                                                     7686 |
|                                                     3221 |
|                                                     1028 |
|                                                        1 |
+---------------------------------------------------------+
4 rows in set (0.00 sec)

まとめ

このように、DATEDIFF()関数とSTR_TO_DATE()関数を組み合わせることで、文字列形式で保存された日付でも現在の日付との差を正確に求めることができます。勤続年数の計算や経過日数の集計など、実務でも幅広く活用できるテクニックなので、ぜひ覚えておきましょう。

  1. 関数とプロシージャの違いとは?SQLにおける9つの重要な相違点を徹底解説

    はじめにプログラミングやデータベースを学んでいると、「関数(Function)」と「プロシージャ(Procedure)」という2つの概念によく出会います。どちらも入力を受け取って特定のタスクを実行する命令の集合ですが、SQLなどの環境では明確な違いがあります。本記事では、両者の基本的な定義から、実務で役立つ9つの相違点までをわかりやすく解説します。 関数(Function)とは関数とは、コンピュータプログラミングにおいて、何らかの入力を受け取り、特定の処理を実行する命令の集合です。SQLにおいては、関数は必ず値を返すという大きな特徴があります。そのため、計算結果を取得したい場面でよく利用されま

  2. MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (