1

当涉及到 SQL 查询时,我有点笨拙,我找不到任何帮助,所以我想我会问。

我目前正在开发一个事件跟踪器/日历样式的东西,有两种类型的事件。一种是标准从 X 开始并在 Y 结束,而另一种是“全天”(即,从上午 12:01 开始,在晚上 11:59 结束)。我的问题是数据库查询对其进行正确排序。我想要做的是得到回报,这样全天的事件就在当天列表的最后。

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

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

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

SELECT * FROM table ORDER BY all_day_flag, startTime;

这是行不通的,因为它总是把全天的事件放在最后,所以任何关于在哪里改进它的提示都将不胜感激。

4

1 回答 1

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;
于 2012-04-10T20:56:46.657 回答