我有一个我想要的事件管理系统,
如果活动注册了5天(2009年1月21日至2009年1月26日)那么如果另一个人想在2009年1月22日至2009年1月24日期间注册活动,那么它将不允许注册。我想使用SQL查询来检查这个,所以请告诉我我该怎么做。
答案 0 :(得分: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也有很好的描述。
答案 1 :(得分:4)
SELECT *
来自事件e
WHERE(@startDate BETWEEN e.startDate和e.endDate)
或(@endDate BETWEEN e.startDate和e.endDate)
或(@startDate< e.startDate AND @endDate> e.endDate)
答案 2 :(得分:1)
在SQL帮助中查找DATEDIFF。