python - 如果插入时间在时间​​范围内则插入表

标签 python mysql python-3.x sql-insert mariadb-10.1

如果当前时间在默认时间范围内,是否可以将数据插入表中?

我有一个表 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/

相关文章:

python - 如何写入无 header PCM 格式的文件?

mysql - 错误 : When running sqoop import command on master node

python - 如何将类 "filter"的实例直接转换为 str

python - 从 Pandas Dataframe 的列中删除 URL

python - 合并多个词典的最佳方法是什么?

python - Django 下载名称为变量的 csv 文件

python - 保存到文件并加载 python 类的实例及其属性

mysql - 切换购物车中的货币和元素时 Magento 内存不足

php - 移动上传文件(...): failed to open stream: No such file or directory

python - 如何格式化所有其他行以与其之前的行合并? (Python)