0

これは仕事で思いついたばかりで、この機能の背後にある理論的根拠は何だろうと思っていました

function        Description
age(timestamp)  Subtract from current_date (at midnight)

これは、なぜ午前 0 時から指定された日付を減算するのかと尋ねられました。now() から減算する代わりに? 理由はありますか?それともただの理由ですか?

4

1 に答える 1

0

の両方の形式は、 ではなく、パラメーターとしてage()受け取ります。を指定すると、深夜に対応する に変換されます。timestampdatedatetimestamp

パラメーターが 1 つの形式では、今日の午前 0 時に対して年齢が計算されます。これは、明らかに最も有用な既定値です。

  • を指定するとtimestamp、日数に加えて午前 0 時までの時差が得られます。
  • を指定するとdate、日数の間隔が得られます。

これらは、安定した、すぐに役立つ、簡単に理解できる結果です。
年齢が に対して計算される場合now()、これらのいずれにもなりません。これは、2 パラメーター形式を使用していつでも明示的に行うことができます。

したがって、これらの式は同じ結果になります。

SELECT age(now())
     , age(now()::date, now())
     , age(date_trunc('day', now()), now());
于 2012-07-19T01:13:00.167 に答える