zoukankan      html  css  js  c++  java
  • 判断请假时间区间内有没有重复的数据

    这里要区分时刻 和 时间区间,时刻是某一固定的时间如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#的代码,最关键的思想就是四个时刻(签到时刻,签退时刻,数据库签到时刻,数据库签退时刻) 作为比较 例如:签到时刻 和 数据库某条数据比较;判断 这个签到时刻是不是在数据库某条数据的签到和签退时间区间之内 ,

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

  • 相关阅读:
    android创建自定义对话框
    激光裁剪的商务名片
    60个响应式的Web设计教程–能够手机访问!
    前端性能优化:使用Data URI代替图片SRC
    40个最好的Tumblr主题
    40个超酷的jQuery动画效果教程
    15个最好的jQuery timeline插件
    60+富有创意的宣传册设计
    Eclipse安装SVN
    EXPLAIN 关键字可以 查看 sql执行 的详细过程
  • 原文地址:https://www.cnblogs.com/Children-qiuzhen/p/9921269.html
Copyright © 2011-2022 走看看