作者dinos (守护神)
看板Database
标题Re: [SQL ] 判断重叠的时间
时间Sat Sep 27 17:45:42 2008
这样的设计方式没什麽不好啊
要比较两个日期区间的话,先看一下范围的概念
固定资料 时间点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
1F:推 PsMonkey:我不会特别把时间跟日期分开来... XD 09/27 18:23
2F:→ dinos:两种作法 各有各的好处 09/28 13:50
3F:推 Rukawa31:谢谢回覆^^ 09/29 15:13