我有一个问题。我有两个时间:时间01:11:00和时间02:11.02。因为它是由用户输入的,所以我不知道时间01是小还是时间02小。示例:我有预订,当用户输入时,它看起来像:
Insert into table01("time01,"time02") values ("11:01",11:02)
我想使用 postgres sql create funtion("or sql...(从用户那里获取数据并进行比较。我希望选择时间很小,然后我从 time01 和 time02 中获得时间小并做点什么。我该怎么做。
最简单的方法可能只是创建一个视图或查询,以按所需的顺序获取值:
select least(time1, time2) as time_first,
greatest(time1, time2) as time_second
from table01;
如果希望用户只能按正确的顺序输入时间,请使用检查约束:
alter table table01 add constraint chk_table01_time1_time2
check (time1 < time2);
这将拒绝无序输入。
最后,如果您希望两次以正确的顺序提供,而不管它们提供给表的顺序如何,请使用触发器。
很难理解您的问题,但我相信即使您没有正确输入时间,您可能也希望按顺序存储时间?然后你可以使用 least()
和 greatest()
.第一个返回最小的参数,第二个返回最大的参数。所以你可以做:
INSERT INTO table01
(time01,
time02)
VALUES (least('11:01',
'11:02'),
greatest('11:01',
'11:02'));
编辑:
如果您只想保存较小的一次,只需使用least()
并将其保存在您想要的任何位置。假设目标是表中milestone
的列milestones
:
INSERT INTO milestones
(milestone)
VALUES (least('11:01',
'11:02'));