2012-04-10 11 views
1

SQLクエリーに関してはちょっと酔っぱらっているので、助けを見つけることができませんでした。SQLiteクエリの並べ替え

私は現在、イベントトラッカー/カレンダースタイルのものに取り組んでいますが、2種類のイベントがあります。 1つはXで始まりYで終わり、もう1つは「終日」です(つまり、午前12時01分に始まり、午後11時59分に終わります)。私の問題は、適切にそれを並べ替えるデータベースクエリです。私がしようとしているのは、終日イベントがその日のリストの最後にあるようなリターンを得ることです。例えば

私は11 AMに4つのイベント、午後1時に1、2 PM 1つ、1一日中、及び1つの明日を持っている場合、それは次のようになります。

  • 午後1:00イベント
  • 午後2時開始日と終了日のために私が(何らかの理由で秒単位で)UNIXタイムスタンプを持っている

イベント

  • 終日イベント
  • 明日午前11:00イベントsの、そして私の現在の試みは

    SELECT * FROM table ORDER BY all_day_flag, startTime; 
    

    それは常に最後に終日のイベントを置くので、これは、動作しませんので、それを洗練する場所の任意のヒントをいただければ幸いです。

  • +0

    を明確にしてください:あなたは、リストの先頭または末尾に終日イベントをしたいですか?あなたは第2段落で前者を望むようですが、最後の段落でこれはあなたが望むものではないと言います。 –

    +0

    OK、わかりました。あなたは時間だけでなく、日によって区別したいと思っています。 –

    +0

    まさに、私はそれを一日に並べ替え、一日の旗で、そして時間で並べ替えたいと思っています。私はちょうどタイムスタンプから日/日付を取得する方法がわかりません。 – Agayek

    答えて

    1

    Unixのタイムスタンプとは別に日付と時刻を抽出してから、最初の並べ替えオプションとして日付を使用してから、終日のフラグを指定してから時刻を使用する必要があります。

    これを試してみてください:

    SELECT date(startTime, 'unixepoch') AS startDate, 
         time(startTime, 'unixepoch') AS startHour, 
         time(endTime, 'unixepoch') AS endHour, 
         all_day_flag 
        FROM table 
        ORDER BY 
        startDate, all_day_flag, startHour; 
    
    +0

    大変感謝しています。これは必要に応じて機能するようです。 – Agayek