2012-01-04 52 views
0

表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之前,dateto我要檢查它是否是匹配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年1月12日至2011年12月12日選擇日期,如果我選擇2011年11月31日至2011年12月12日期間的日期,則表示上述查詢正常允許插入...

如何修改我的查詢....

需要查詢幫助

+1

是否要選擇記錄的日期範圍的任何部分在指定日期範圍內(記錄的整個日期範圍在指定日期範圍內)還是其他內容的記錄? – 2012-01-04 12:43:50

+1

你想要做什麼?一點都不清楚。 – 2012-01-04 12:49:44

回答

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'格式。