私たちのフォームでは、最初にカテゴリ (分、時間、日、月、年) を指定して年齢を入力し、次に整数値を入力します。この方法の問題点は、年齢に一貫性がなくなることです。18 か月は 1 年よりも長く、統計分析が困難になります。
内部的には、このデータを (現在格納されているように) 2 つの整数としてではなく、間隔と整数として格納する必要があります。2 番目の整数は元の単位を示します。
ここに質問があります: postgreSQL にこの間隔を入力された時間として返すように指示する簡単な方法は何ですか? たとえば、ユーザーは「18 か月」と入力します。現在、1 年 6 か月として返されます。-- フォームに再表示できません。他の整数に基づいて、彼らが入力したものを知っているので、小数部はありません。つまり、日で入力した場合、時間はありません。
理想的には、次のようなものになります
SELECT as_time((person.age).value,'months')
これらの間隔はそのまま入力されるため、月は 30 日間隔の「月」(代表的な月) 以外になることはありません。必要に応じて、plpgsql 関数を使用できます。これは、時間型コードを検索する必要があるためです。しかし、すべての場合の厳密な要件は、ある時間に入った場合、丸めや「修正」などをせずに、正確にその時間に戻すことです。