3

我有一个我想要的事件管理系统,

如果一个活动注册了 5 天(2009 年 1 月 21 日到 2009 年 1 月 26 日),那么如果另一个人想要在 2009 年 1 月 22 日到 2009 年 1 月 24 日之间注册一个活动,那么它将不允许注册。我想使用 SQL 查询来检查这个,所以请告诉我该怎么做。

4

3 回答 3

5

只是为了完成其他答案,您有一篇关于如何使用 SQL Server 2000 搜索日期和时间值的好文章

它提醒您日期/时间值的存储方式(两种日期/时间数据类型:datetime 和 smalldatetime)

它还指出 Datetime 和 smalldatetime 类似于浮点数据类型,float 和 real,因为它们是近似数字。这意味着从 SQL Server 检索的值可能与最初存储的值不同。

另外,它警告数据库设计者并不总是正确使用日期/时间列。在设计数据库时,应确定每个日期/时间列是否将同时存储日期和时间、仅存储日期或仅存储时间。

它以对 data/time 的实际查询结束

您还可以在此处对 DATEADD 和 DATEDIFF进行很好的描述。

于 2008-12-11T07:49:33.500 回答
4

SELECT *
FROM events e
WHERE (@startDate BETWEEN e.startDate and e.endDate)
OR (@endDate BETWEEN e.startDate and e.endDate)
OR (@startDate < e.startDate AND @endDate > e.endDate)

于 2008-12-11T07:38:49.510 回答
1

在 SQL 帮助中查找 DATEDIFF。

于 2008-12-11T07:40:35.513 回答