sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLでage()がどのように機能するか

    Postgresでは、age() 関数は、2つのタイムスタンプまたは日付変数に基づいて年齢を返します。

    結果は、日だけでなく、年と月を使用して返されます。

    たとえば、結果は次のようになります。3年2か月30日

    構文

    次の2つの構文のいずれかを使用できます。

    age(timestamp)
    age(timestamp, timestamp)

    最初のものは、現在の日付に基づいて年齢を返します。具体的には、current_date()から減算します (深夜)

    2番目の構文では、2つの明示的な日付に基づいて日付を取得できます。この構文を使用すると、最初の日付から2番目の日付が減算されます。つまり、年齢は今日の日付に基づいているのではなく、最初の引数で指定された日付に基づいています。

    例1-今日の日付を使用する

    これが最初の構文を示す例です。

    SELECT 	age(timestamp '1987-03-14');

    結果:

    33 years 2 mons 30 days

    この場合、私は単一の引数を提供しました。 age() 次に、関数はそれを今日の日付(クエリを実行した日付)から減算すると、結果が得られます。

    これをさらに説明するために、ここでも説明しますが、今回はcurrent_date()と一緒に クエリを実行した日付を表示します。

    SELECT 	
      current_date,
      age(timestamp '1987-03-14');

    結果:

     current_date |           age           
    --------------+-------------------------
     2020-06-13   | 33 years 2 mons 30 days

    例2–カスタム日付を使用する

    この例では、比較する2つの日付を提供します。したがって、年齢は今日の日付に基づいていません。これは、age()に提供された最初の日付に基づいています 機能。

    SELECT age(timestamp '2001-01-01', timestamp '2000-03-14');

    結果:

    9 mons 18 days

    この場合、年齢は1年未満であるため、結果にはその年は含まれていません。

    これは、年のみが変更された場合に何が起こるかを示す別の例です(つまり、2つの日付の月と日の部分はまったく同じですが、年は異なります)。

    SELECT age(timestamp '2007-01-01', timestamp '2000-01-01');

    結果:

    7 years

    繰り返しになりますが、関連性のない部分(この場合は月と日)を省略しているだけです。

    例3–同一の日付

    両方の日付が同じ場合は次のようになります。

    SELECT age(timestamp '2001-01-01', timestamp '2001-01-01');

    結果:

    00:00:00

    例4–負の年齢

    2番目の日付が最初の日付よりも遅い場合は、負の年齢になります。

    SELECT age(timestamp '2001-01-01', timestamp '2002-03-07');

    結果:

    -1 years -2 mons -6 days

    ここでは、日付のすべてのコンポーネント(つまり、年、月、日のコンポーネント)にマイナス記号が付加されています。

    例5–年齢(年)

    年齢のみが必要な場合は、extract()のいずれかを使用できます またはdate_part() age()から年を抽出します 関数の戻り値。

    extract()を使用する例を次に示します。 機能:

    SELECT extract(year from age(timestamp '1997-10-25'));

    結果:

    22.0

    AzureDataStudioで実行するとこのように表示されます。

    psqlで実行すると 、私はこれを取得します:

    22

    両方のextract() およびdate_part() 倍精度データ型を使用して結果を返します。

    必要に応じて、::intを追加することにより、これを整数(または他のデータ型)に変換できます。 。

    SELECT extract(year from age(timestamp '1997-10-25'))::int;

    結果:

    22

    1. MySQLデータ型:使用するデータ型とその方法を知っている

    2. SQLケース:3つのあまり知られていない面倒を知って回避する

    3. エラー:クライアントはサーバーから要求された認証プロトコルをサポートしていません。 MySQLクライアントのアップグレードを検討してください

    4. DBMS_JOBとDBMS_SCHEDULER