如何在帖子中比较两个时间和选择时间小



我有一个问题。我有两个时间:时间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'));               

最新更新