如果当前时间在默认时间范围内,是否可以将数据插入表中?
我有一个表 time_tb 并有列
id, time_start, time_end, time_inserted, status
time_start 和 time_end 有默认值, time_start='08:00:00' 和 time_end='08:59:00'
如果 time_inserted = '08:10:00' 则将插入数据,状态列将标记为“当前”,如果 time_inserted = '09:00:00' 则状态列将标记为“迟到”。
最佳答案
您可以使用 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
最后的想法是,跟进 Strawberry 的评论:另一种选择是不存储这些派生信息,这些信息可以在查询表时即时计算:
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
关于python - 如果插入时间在时间范围内则插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59498895/