請問如何判斷日期區間是否有相衝突 |
答題得分者是:change.jian
|
luckylin25
一般會員 ![]() ![]() 發表:24 回覆:25 積分:9 註冊:2005-03-07 發送簡訊給我 |
請問各位大大
我的資料庫內容如下
序號 開始日期 結束日期
1 2005/03/01 2005/03/15
2 2005/03/16 2005/03/31
.
.
. 當我在新增一筆時,此筆的開始日期和結束日期不能介於資料庫內各序號的開始日期和結束日期
也就是說當我新增一筆時,開始日期如果是2005/03/12就會和序號1的的起訖時間相衝突
不知道如何下語法來判斷此筆的起訖時間沒有和資料表內的其他記錄的起訖時間相衝突 開始日期和結束日期的資料型態為DataTime 發表人 - luckylin25 於 2005/04/01 14:42:44
|
change.jian
版主 ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
bestlong
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
不知道這樣可不可以呢? select A.* from Table A
where
( /* 尋找開始日有在歷史紀錄的日期區間 */
(datediff(day, A.SDate, dtSDate) >= 0) and
(datediff(day, A.EDate, dtSDate) <= 0)
)
or
( /* 尋找結束日有在歷史紀錄的日期區間 */
(datediff(day, A.SDate, dtEDate) >= 0) and
(datediff(day, A.EDate, dtEDate) <= 0)
)
or
( /* 尋找歷史紀錄的日期區間有在新增的日期區間內 */
(datediff(day, A.SDate, dtSDate) <= 0) and
(datediff(day, A.EDate, dtEDate) >= 0)
) 有找到資料就是有重疊, datediff 為 MS SQL 的函數. 若是用其他 DB 請自行轉換 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶 發表人 - bestlong 於 2005/04/01 15:32:30
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
luckylin25
一般會員 ![]() ![]() 發表:24 回覆:25 積分:9 註冊:2005-03-07 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |