2008-12-11 83 views
3

如果事件被註冊爲5天(21 2009年1月至2009年1月26日),那麼如果其他人想2009年1月22日之間註冊事件到24我有一個事件管理系統,我想,如何在SQL中搜索日期?

2009年1月,那麼它將不允許註冊。我想用SQL查詢來檢查這個,所以請告訴我怎麼做到這一點。

回答

4

SELECT *
從事件Ë
WHERE(@startDate BETWEEN e.startDate和e.endDate)
OR(@EndDate BETWEEN e.startDate和e.endDate)
OR(@startDate <如startDate AND @endDate> e.endDate)

+0

不知何故,我不認爲他已經進入存儲過程... – Tomalak 2008-12-11 07:53:33

1

在SQL幫助中查找DATEDIFF。

5

只是完成其他的答案,你有How to Search for Date and Time Values Using SQL Server 2000

它會提醒您日期/時間值是如何存儲的好文章(兩個日期/時間數據類型:datetime和smalldatetime)

它還指出Datetime和smalldatetime類似浮點數據類型,float和real,因爲它們是近似數值。這意味着從SQL Server檢索到的值可能與最初存儲的值不同。

此外,它警告數據庫設計人員不總是適當地使用日期/時間列。在設計數據庫時,應確定每個日期/時間列是否將存儲日期和時間,僅存儲日期或只存儲時間。

它關閉practical queries on data/time

您還有一個很好的描述DATEADD and DATEDIFF here