表1
ID Month datefrom dateto reason
001 12/2011 01/12/2011 10/12/2011 Leave
001 12/2011 18/12/2011 25/12/2011 Holiday
.....
datefrom,dateto数据类型为datetime
,datefrom& dateto格式为(dd/mm/yyyy
)
在插入datefrom之前,date to我想检查它是否与datefrom和dateto表相匹配
尝试查询(插入之前我正在检查用户输入日期是否与表匹配)
SELECT * FROM table1
WHERE (Month = '01/2012') AND
(id = '001') and
Convert(Datetime, '01/12/2011', 103) between datefrom and dateto or
Convert(Datetime, '10/12/2011', 103) between datefrom and dateto
如果我选择2011年12月1日至2011年12月10日的日期,则上述查询有效,如果我选择2011年11月31日至2011年11月11日的日期,则表示允许插入...
如何修改我的查询....
需要查询帮助
答案 0 :(得分:1)
这是一个非常(非常)疯狂的猜测。您是否正在尝试INSERT
进入表格,但是您不希望[datefrom, dateto]
区间与表格中的任何现有区间交叉?
如果是,你可以这样做:
INSERT INTO table1
(datefrom, dateto)
SELECT @DateFromNewValue, @DateToNewValue
WHERE NOT EXISTS
( SELECT *
FROM table1
WHERE datefrom <= @DateToNewValue
AND @DateFromNewValue <= dateto
)
并且@DateNewValue
格式为'yyyy-mm-dd'
。