1

タイトルはかなり難解かもしれませんが、ここで私の質問です。

1日のイベントの表(旅程)があります。各エントリ (たとえば、美術館への訪問) には、slot_start と slot_end の時間列があります。これは 24 時間形式なので、たとえば 13:00:00 - 15:00:00 です。

これらを slot_start asc で注文したいのですが、slot_start 00:00:00 で「バー/クラブに行く」のエントリを作成できます。真夜中が最初に注文されますが、これが正しい順序ですが、これは実際には新しい日なので、博物館の後に来てほしいです.

これらには特定の日付はありません。それらはスロット時間によってのみ制約され、1 日のイベントとして考えられます。

この種のセットアップの経験がある人はいますか?または、各「イベント」の時間を設定する別の方法を誰かが提案できますか? 1日目、2日目という観点から、どの日の要素を紹介する必要があるかもしれません...

4

4 に答える 4

0

私は個人的にstart_unixとdurationを使用しています。

  • start_unixは、イベントの開始時のunix_timestampです。
  • 期間は単に期間です
  • end_unix =(start_unix +期間)

これは、これらの問題を完全に制御するための簡単な方法です。

あなたにとって罪深い解決策は、真夜中を過ぎたこれらの時間を例えば25:00:00(01:00:00)に設定し、それらを表示するときにとを実行することSELECT MOD(slot_start, 24) AS slot_start_modですORDER BY slot_start

于 2012-05-23T13:13:51.557 に答える
0

次を使用して、複数の列で並べ替えることができます。

ORDER BY Day, Time
于 2012-05-23T13:03:53.893 に答える
0

「00:00:00」は博物館の後、00:01:00 にクラブに入った場合を意味しますか? または00:01:00?

それを制御するには、テーブルに「日」が必要です。

あなたの問題に対する非常に「醜い」解決策は、次のようなものです。

最初に「制限」を選択して、レコードを常に「古い」と見なします。3AM としましょう。3AM より前のすべてのレコードは、他のすべての「後」と見なされます。次に、次のようにします。

select * 
from your_table 
where slot_start > '03:00:00'
order by slot_start 

union

select * 
from your_table 
where slot_start < '03:00:00'  and slot_start > '00:00:00'
order by slot_start 

繰り返しますが、これは良い解決策ではありません。理想的には、テーブルに「日」コントロールが必要です

于 2012-05-23T13:13:00.090 に答える
0

これは、並べ替えのためだけに実際の Slot_start 時間から 1 分を差し引くことができるアイデアです (ただし、テーブルで日付列を使用することをお勧めします)。

Select * from Table order by dateadd(minute,-1,TIME)

dateadd 関数は、並べ替えるために TIME 列に (-1) 分を追加します

于 2012-05-23T13:29:06.603 に答える