我在SQL查询方面有点小问题,我找不到任何帮助,所以我想我会问。
我目前正在制作一个事件跟踪器/日历风格的东西,有两种类型的事件。一个是标准从X开始并在Y结束,而另一个是“全天”(即,从上午12:01开始,到晚上11:59结束)。我的问题是数据库查询正确排序。我要做的就是获得回报,以便全天活动在当天的最后一个列表中。
例如,如果我有4个事件,一个是下午1点,一个是下午2点,一个是全天,一个是明天上午11点,它看起来像:
我有开始和结束日期的UNIX时间戳(以秒为单位),我当前的尝试是
SELECT * FROM table ORDER BY all_day_flag, startTime;
这不起作用,因为它总是把全天活动放在最后,所以任何关于在哪里改进它的提示都会非常感激。
答案 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;