我正在使用一个事件管理系统,其中我想要实现的功能是:
如果一个事件已注册了5天(从2009年1月21日到2009年1月26日),那么如果另一个人想要在2009年1月22日至1月24日期间注册一个事件,系统将不允许注册。我想使用SQL查询来检查这一点,请告诉我如何做到。
我正在使用一个事件管理系统,其中我想要实现的功能是:
如果一个事件已注册了5天(从2009年1月21日到2009年1月26日),那么如果另一个人想要在2009年1月22日至1月24日期间注册一个事件,系统将不允许注册。我想使用SQL查询来检查这一点,请告诉我如何做到。
除了其他答案的补充,您可以在如何使用SQL Server 2000搜索日期和时间值中找到一篇好文章。
它提醒您日期/时间值是如何存储的(有两种日期/时间数据类型:datetime和smalldatetime)。
它还指出Datetime和smalldatetime就像浮点数据类型float和real一样,它们是近似数值。这意味着从SQL Server检索的值可能与最初存储的值不同。
此外,它警告数据库设计人员不总是正确地使用日期/时间列。在设计数据库时,应确定每个日期/时间列是否将存储日期和时间、仅日期或仅时间。
最后,它提供了关于日期/时间的实用查询。
此外,您还可以在DATEADD和DATEDIFF的描述中找到详细信息。
选择所有列
从事件表 e 中
其中 (@startDate 在 e.startDate 和 e.endDate 之间)
或者 (@endDate 在 e.startDate 和 e.endDate 之间)
或者 (@startDate < e.startDate 并且 @endDate > e.endDate)
在SQL帮助中查找DATEDIFF。