现在我有这样一个表结构!----------------------------
人员姓名| 刷卡时间
---------------------------
a       |2006-8-29 8:23:00
-------------------
b       |2006-8-29 10:00:00
-------------------
c       |2006-8-29 11:00:00
---------------------------
我想设定某个时间段是为正常刷卡,超出这个时段就是不正常!我设两个变量A和B ,A到B之间的时间段为正常刷卡时间,如果不在这个时间段内就为不正常但是我又做了限定6到12点是上午的时间
也就是6:00-A 为不正常  B-12:00为不正常!请各位师兄指教!

解决方案 »

  1.   

    是说如何写SQL语句?还是探讨这样做好不好?
      

  2.   

    select case yourtime when <A then 'false' when >B then 'false' else 'true' end as 字段名 from yourtable where yourTiaojian
      

  3.   

    我的语句是这样写的!但是报错!
    select * from 打卡时间表 where 刷卡时间 between 6:00 and @A or @b and 12:00
      

  4.   

    两个阀值之间就用between就好了,多个条件可以用case
      

  5.   

    Yellow198267(世间每多不平事,旦愿长醉不复醒!) 你好!你那样的写法是超出这个A与B 之间的时间段后就为不正常!但是你没有把6:00到A ,B到12:00考虑进去阿!
      

  6.   

    jiatong1981(末日之痕) 谢谢!能给个代码吗?
      

  7.   

    列出6点到12点间的记录的SQL语句
    SELECT *
    FROM table
    WHERE (DATEPART(hh, shijian) BETWEEN 6 AND 12)
      

  8.   

    实际上可以用between得到是正常打卡的记录,然后再搜出当前所有记录中不包含这些记录的数据集都是属于异常的记录。
      

  9.   

    怎么会麻烦 一条sql语句就搞定了啊
      

  10.   

    TO:
    我的语句是这样写的!但是报错!
    select * from 打卡时间表 where 刷卡时间 between 6:00 and @A or @b and 12:00语法错误了
    应是以下的格式 
    SELECT * FROM tb_Time WHERE tt between 6:00 and @A or tt between @b and 12:00
      

  11.   

    select 人员姓名 
    from 表名 
    where (人员姓名 not in
                  (select 人员姓名 
                   from 表名
                   where(刷卡事件 Between @A and @B))