2

私は、それぞれがタイムスパンを持つエントリのデータベースを検索して、ユーザー入力時間またはタイムスパンがエントリスパン内にあるかどうかを確認するmysqlクエリに取り組んでいます。

元ユーザーは「13:00」または「13:00-16:00」と入力できます。
データベースには次のようなエントリがあります。

id    startTime    endTime  
1     08:00        12:00  
2     20:00        03:00  
3     14:00        01:00  
4     16:00        21:00  

1日の期間(startTime <endTime)に対して、検索は非常に簡単です。問題は、スパンが深夜(endTime <startTime)を通過するときのテストです。このアプリケーションの場合、これらの値に日付を添付することはできません(時間としてのみ保存されます)。そのため、timediffなどは機能しません。

更新:
期間が24時間を超えることはないため、startTime1とendTime3は、26時間のアイテムではなく、常に2時間のアイテムになります。

私が日付を使用しない理由は、これが多かれ少なかれ営業時間のようなものに関連しているためです(ただし、正確にはそのユースケースではありません)。スパンが表すアイテムには毎日の時間が含まれているため、毎日に日時スタンプを追加することは実用的ではありません。

4

1 に答える 1

3

endTimeかどうかを確認します

  1. totaltime = startTime +(24時間-endTime)

これで私が目にする問題は、endTimeが翌日でendTime>startTimeであるかどうかです。たとえば、正午に開始し、翌日の午後1時に終了します。期間が2日を超える場合にも問題があります。たとえば、1日目から開始し、3日目以降に終了します。日付を使用することをお勧めします。

于 2010-06-21T17:30:42.907 に答える