提交时间段订单判断是否重复

本文探讨了如何处理订单时间段重复的问题。通过将fromdate、fromtime、todate和totime转换并结合数据库的CASE语句和内置函数,如CONCAT_WS和STR_TO_DATE,来判断和防止时间重复。当尝试插入重复订单时,会触发唯一性约束错误,从而避免了时间段冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题背景

开发oa系统中,提交申请单中不能出现同一个时间段提交两个申请单,包含上下午情况。

2.问题思路

1.如果是一个时间判断是否重复问题,则可以考虑生成文件编号时候,把时间日期生成订单编号,并且把订单编号设置成唯一,重复插入数据时候,则会提示唯一性报错,捕获到这个异常,然后就可以实现不重复时间段问题。

2.对于我现在问题时间段fromdate(起止时间),fromtime(起止上下午),todate(结束时间),totime(结束上下午) 当然可能这么设计不是很合理了,完全可以通过数据库中一个起始日期和结束日期进行存储。既然情况是这个情况,我们就进行此种情况解决。

1.此种情况用到的主要是数据库中内置函数(case when  else end) 判断两种问题,相当于java代码中if....else... 我也是才知道在sql语句中直接可以进行if....else..编写回到我自己问题 

CASE fromtime when '上午' THEN '9' when ' 下午' THEN '13' else fromtime end  //起止上下午字段,转为24小时制数字,上午对应 9点,下午对应15点

2.上下午字段转化完,进行与起止时间和结束时间拼接,内置函数 CONCAT_WS(a,b,c) 三个参数,a拼接两个参数用啥字符,b拼接第一个参数,c拼接第二个参数

CONCAT_WS('-',fromDate,CASE fromtime when '上午' THEN '9' when '下午' THEN '13' else fromtime end)  

至此,2017-5-12 上午 经过上面两步转换为 2015-5-12-9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值