在我们的表格中,人们将通过首先指定一个类别(分钟、小时、天、月、年)然后输入一个整数值来输入年龄。这种做法的问题是年龄变得不一致——18个月大于1年,这使得统计分析变得困难。
在内部,我需要将此数据存储为不是两个整数(因为它当前存储),而是作为一个间隔和一个整数。第二个整数表示原始单位。
这是一个问题:告诉 postgreSQL 将此间隔返回为输入时间的简单方法是什么?例如,用户输入:18 个月。现在,它将以 1 年 6 个月的形式返回。-- 无法在表单上重新显示。我根据另一个整数知道他们输入的内容,所以不会有小数部分 - 即如果他们在几天内输入,就不会有小时等。
理想情况下,它会像
SELECT as_time((person.age).value,'months')
请注意,这些间隔按原样输入,因此月份不会是 30 天间隔“月份”(代表月份)以外的任何内容。如果需要,我可以使用 plpgsql 函数,因为我需要查找时间类型代码;但在所有情况下的严格要求是,如果他们输入了某个时间,他们就会准确地回到那个时间,没有四舍五入,没有“更正”等。