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