• 判断请假时间区间内有没有重复的数据


    这里要区分时刻 和 时间区间,时刻是某一固定的时间如2018-11-07 10:22:00 。而时间区间是两个时刻中间的时间如2018-11-07 10:22:00 - 2018-11-07 11:22:00 

    我需要判断请假的时间区间 有没有重复的请假时间

    //判断时间区间有没有数据

    //签到签退时间   接口传递过来的数据


    string fdtmInDate = json.Master[0].Data.Rows[0]["fdtmInDate"].ToString();
    string fdtmOffDate = json.Master[0].Data.Rows[0]["fdtmOffDate"].ToString();

    //员工编码
    string fchrEmployee = json.Master[0].Data.Rows[0]["fchrEmployee"].ToString();

    //前两天和后两天  这个是减少数据,是判断前后两天的数据

    DateTime dt = Convert.ToDateTime(fdtmInDate);
    string dthou= dt.AddDays(2).ToString();
    string dtqian = dt.AddDays(-2).ToString();

    //fbitDelete  是假删除的字段  为一的是删除字段
    strSQL = @" select * from dbo.HRAttendanceDetail whit(nolock)  where fchrEmployee='" + fchrEmployee + "' AND (fdtmInDate >= '" + dtqian + "' AND fdtmInDate <= '" + dthou + "') AND(fbitDelete is null OR fbitDelete = 0)

    AND

          (

                  (

                        (fdtmInDate >= '"+fdtmInDate+"' AND fdtmInDate < '"+fdtmOffDate+"') OR(fdtmOffDate > '"+fdtm InDate+"' AND fdtmOffDate <= '"+fdtmOffDate+"')

                    ) OR(

                       (fdtmInDate <= '"+fdtmInDate+"' AND fdtmOffDate > '"+fdtmInDate+"') OR(fdtmInDate < '"+fdtmOffDate+"' AND fdtmOffDate >= '"+fdtmOffDate+"')

                    )

       ) ";
                  DataTable dd = DBHelper.GetTable(strConn, strSQL);
                  if (dd.Rows.Count>0) { throw new Exception("该时间区间内有签到/签退时间,无法新增!"); }

    我这是基于C#的代码,最关键的思想就是四个时刻(签到时刻,签退时刻,数据库签到时刻,数据库签退时刻) 作为比较 例如:签到时刻 和 数据库某条数据比较;判断 这个签到时刻是不是在数据库某条数据的签到和签退时间区间之内 ,

    要是在就说明这个时间区间和数据库的时间区间有交集,其他三个时刻也是这个比较,接口传的数据和数据库的比较,数据库和接口的比较。只要有一个成立就说明有交集。都不成立则说明没有交集。

  • 相关阅读:
    java的final变量理解
    springMVC如何判断入参是默认参数还是请求传过来的参数?
    java反射新的应用
    冒烟测试和回归测试的区别
    git变基、冲突解决
    mockServer学习
    mongodb查询之模糊查询
    springxml配置构造函数入参
    mockito学习
    solr官方文档翻译系列之schema.xml配置介绍
  • 原文地址:https://www.cnblogs.com/Children-qiuzhen/p/9921269.html
Copyright © 2020-2023  润新知