SQL表日期字段比较

时间:2009-05-05 20:16:35

标签: asp.net

我的预订表格有两张桌子。一张表有书号(1-10)和状态;所有状态最初都是“可用的”。

第二个表具有reserver和date字段的名称(签入,签出),并且两个表都与外键相关联。因此table1到table2具有一对多的关系;意味着许多学生可以保留一本书。

问题:

当我收到预订请求时,假设book1;然后该book1的状态应该更改为该日期时间的“Oh Hold”(在table1上)。当第二个请求来自同一本书1时,在相同的日期范围内或与日期重叠,它必须告诉某些消息,例如此日期已经保留或类似,因此第二个请求者不能在同一本书的同一日期保留,但他可以请求另一本书。

如何检查已存在的sql表日期到当前输入日期?

非常感谢您的回复。

谢谢,

1 个答案:

答案 0 :(得分:1)

基本上你会看到这个日期模式:

  • 第一个日期不能在保留范围内。
  • 最后一个日期不能在保留范围内
  • 如果第一个日期少于预约的第一个日期,则最后一个日期不能大于保留范围的最后日期:

这样的事情会找到当前的预订:

SELECT *
FROM reservations 
WHERE book = @bookId
AND (
(@dat_ini BETWEEN begin_date AND end_date)
OR (@dat_end BETWEEN begin_date AND end_date)
OR (@dat_ini < begin_date AND @dat_end > end_date)
)