必要なイベント管理システムを持っていますが、
イベントが 5 日間 (2009 年 1 月 21 日から 2009 年 1 月 26 日) 登録された場合、別の人が 2009 年 1 月 22 日から 2009 年 1 月 24 日までのイベントを登録したい場合、登録は許可されません。これをSQLクエリで確認したいのですが、どうすればよいか教えてください。
必要なイベント管理システムを持っていますが、
イベントが 5 日間 (2009 年 1 月 21 日から 2009 年 1 月 26 日) 登録された場合、別の人が 2009 年 1 月 22 日から 2009 年 1 月 24 日までのイベントを登録したい場合、登録は許可されません。これをSQLクエリで確認したいのですが、どうすればよいか教えてください。
他の回答を完成させるために、SQL Server 2000 を使用して日付と時刻の値を検索する方法に関する良い記事があります。
日付/時刻の値がどのように格納されるかを思い出させてくれます (2 つの日付/時刻データ型: datetime と smalldatetime)。
また、Datetime と smalldatetime は、おおよその数値であるという点で、float と real の浮動小数点データ型に似ていることも指摘しています。つまり、SQL Server から取得した値は、最初に格納された値とは異なる場合があります。
さらに、日付/時刻列を常に適切に使用するとは限らないデータベース設計者について警告します。データベースの設計時に、日付と時刻の両方を格納するか、日付のみを格納するか、または時刻のみを格納するかについて、各日付/時刻列を識別する必要があります。
SELECT *
FROM events e
WHERE (@startDate BETWEEN e.startDate と e.endDate)
OR (@endDate BETWEEN e.startDate と e.endDate)
OR (@startDate < e.startDate AND @endDate > e.endDate)
SQL ヘルプで DATEDIFF を参照してください。