Re: [SQL ] 判斷重疊的時間

看板Database作者 (守護神)時間15年前 (2008/09/27 17:45), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串3/3 (看更多)
這樣的設計方式沒什麼不好啊 要比較兩個日期區間的話,先看一下範圍的概念 固定資料 時間點A 時間點B + + 1 在範圍內 a1--------b1 2 在範圍內 a2----------b2 3 在範圍內 a3---------b3 4 在範圍內 a4-------------------------------b4 5 不在範圍內 a5----b5 6 不在範圍內 a6-----b6 所以當 B > A 時 只要 b < A 或 a > B 即不在範圍內 反過來說 只要 a < B 且 b > A 就一定是在範圍內 接下來就看你要用 TIMEDIFF 還是直接比較( <= , >=)都可以 SELECT t1.id FROM t t1 LEFT JOIN t t2 ON t1.bdate=t2.bdate WHERE t1.timeS<t2.timeC AND t1.timeC>t2.timeS AND t1.id<t2.id; 大致上會長這樣 ※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ==.=== [嘆氣] : 隨便亂 google datetime function,第一個會得到這個 : http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html : (這應該是用 mysql 一定會 bookmark 起來的 reference 吧...) : 你想辦法去把你的「日期」跟「開始時間」組成一個欄位 : 看是要用 STR_TO_DATE() 還是啥(只能說你的欄位設計的... [默]) : 然後接下來大概是 DATEDIFF() : ※ 引述《Rukawa31 (hold on)》之銘言: : : 想請問一下 : : 如果有個table主要用來記錄時間的 : : ┌──────┬───────┬───────┐ : : │ 日期 │ 開始時間 │ 結束時間 │ : : ├──────┼───────┼───────┤ : : │ 2008-10-10 │ 8:00 │ 22:00 │ : : ├──────┼───────┼───────┤ : : │ .......... │ .... │ ..... │ : : │ .......... │ .... │ ..... │ : : │ .......... │ .... │ ..... │ : : └──────┴───────┴───────┘ : : 想要搜尋與此table任何時間重疊的資料 : : 例如: 2008-10-10 21:59 23:00 ( O ) : : 2008-10-10 22:59 23:00 ( X ) : : 請問單純用SQL作得到嗎@@? : : 我使用的是MySQL : : 不知道這樣表達板友看不看得懂QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.158.15

09/27 18:23, , 1F
我不會特別把時間跟日期分開來... XD
09/27 18:23, 1F

09/28 13:50, , 2F
兩種作法 各有各的好處
09/28 13:50, 2F

09/29 15:13, , 3F
謝謝回覆^^
09/29 15:13, 3F
文章代碼(AID): #18tW38aC (Database)
文章代碼(AID): #18tW38aC (Database)