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