PostgreSQLで2つの日付またはdatetime(timestamp)の月間の差を取得するには、単純な差記号(減算)を使用します。PostgreSQLで2つの日付の差を求める回りくどい方法として、エポック付きのage()関数を使用することもできます。2つのアプローチの例を見てみましょう。また、例も検討します。PostgreSQL テーブルで 2 つの日付または datetime(timestamp) 列の月間の差を取得する方法の例。

2つの日付の月間の差単純な差分を使用する PostgreSQL:

単純な差の記号は、以下に示すように、2 つの日付の月間の差を計算するために使用されます。

例1:

SELECT round(abs('2024-01-14' :: date - '2020-04-16' :: date)/(365.25/12),2) as month_diff;

出力:

月単位の 2 つの日付の差 - PostgreSQL 1

2つの日付の月間の差AGE() 関数を使用する PostgreSQL:

AGE() 関数では、日付の差を計算する必要がある 2 つの日付を渡します。また、結果を 30.4 で割って、PostgreSQL で 2 つの日付の月間の差を計算します。

例1:

SELECT round(abs((EXTRACT(epoch from age('2024-01-14', '2020-04-16')) / 86400)::INT)/30.35,2) as month_diff

出力:

月単位の 2 つの日付の差 - PostgreSQL 2

2 つの日付列の月間の差PostgreSQL:

方法1

この例では、以下の Student_detail2 テーブルを使用して、PostgreSQL で 2 つの日付列の月間の差を見つける方法を説明します。

Student_detail2:

月単位の 2 つの日付の差 - PostgreSQL 3

単純な差分シンボルは、以下に示すように、PostgreSQL テーブル内の 2 つの日付列の差を月単位で計算するために使用されます。

select *,round(abs(birthdaytime :: date - examdatetime :: date)/(365.25/12),2) as diff_months from student_detail2;

2つの日付列を日付に型変換し、その差を求めて月数に変換したので、切り捨てられます。

出力:

月単位の 2 つの日付の差 - PostgreSQL 4

2 つの日付列の月間の差PostgreSQL EXTRACT() を使用する:

この例では、以下の Student_detail2 テーブルを使用して、PostgreSQL で 2 つの日付列の月間の差を見つける方法を説明します。

Student_detail2:

月単位の 2 つの日付の差 - PostgreSQL 3

EXTRACT() 関数内で、日付の差を計算する必要がある 2 つの日付列を渡します。これは、PostgreSQL の 2 つの日付列の月間の差を計算する Age() 関数とともに EPOCH 関数を使用します。

SELECT *, round(ABS((EXTRACT(epoch from age(examdatetime::date, birthdaytime::date))/ 86400)::INT)/30.35,2) AS diff_months from student_detail2;

列の差を月単位で計算したので、結果の表は次のようになります。

出力:

月単位の 2 つの日付の差 - PostgreSQL 4