您可以使用case
表达式来检查time_inserted
并计算status
相应的值。可能是这样的:
insert into time_tb(time_start, time_end, time_inserted, status)
select
'08:00:00',
'08:59:00,
@time_inserted,
case
when @time_inserted >= '09:00:00' then 'late'
when @time_inserted >= '08:00:00' then 'present'
else 'put something relevant here'
end
另一种选择是使用计算列(因此您不需要将逻辑放在每个INSSERT
语句中)。
alter table time_tb modify status varchar(20) as (
case
when time_inserted >= '09:00:00' then 'late'
when time_inserted >= '08:00:00' then 'present'
else 'put something relevant here'
end
);
您还可以使计算动态化:
case
when time_inserted >= time_end then 'late'
when time_inserted >= time_start then 'present'
else 'put something relevant here'
end
作为最后的想法,跟进草莓的评论:另一种选择是不存储此派生信息,在查询表时可以很好地即时计算:
select
t.*,
case
when time_inserted >= time_end then 'late'
when time_inserted >= time_start then 'present'
else 'put something relevant here'
end status
from mytable t