SQLite查询排序

时间:2012-04-10 20:50:23

标签: sqlite sorting timestamp

我在SQL查询方面有点小问题,我找不到任何帮助,所以我想我会问。

我目前正在制作一个事件跟踪器/日历风格的东西,有两种类型的事件。一个是标准从X开始并在Y结束,而另一个是“全天”(即,从上午12:01开始,到晚上11:59结束)。我的问题是数据库查询正确排序。我要做的就是获得回报,以便全天活动在当天的最后一个列表中。

例如,如果我有4个事件,一个是下午1点,一个是下午2点,一个是全天,一个是明天上午11点,它看起来像:

  • 1:00 PM活动
  • 下午2:00活动
  • 全日活动
  • 明天上午11:00活动

我有开始和结束日期的UNIX时间戳(以秒为单位),我当前的尝试是

SELECT * FROM table ORDER BY all_day_flag, startTime;

这不起作用,因为它总是把全天活动放在最后,所以任何关于在哪里改进它的提示都会非常感激。

1 个答案:

答案 0 :(得分: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;