php - 对 ORDER BY 查询应用循环移位?

标签 php mysql

我在 mysql 上有一个每周时间表,其中我使用内置的 ORDER BY 函数按时间对事件进行排序:ORDER BY time

实际结果

00:01
07:00
08:00
11:00
23:00

预期结果

07:00
08:00
11:00
23:00
00:01
01:00
04:00

等,直到 07:00(例如上午 7 点模数)。

如何更改格式?

最佳答案

看起来您希望基于上午 7:00 - 早上 6:59 进行轮换。您可以根据时间是否在上午 7 点之前进行排序,强制预排序为 2...如果上午 7 点或之后,预排序为 1,然后按自然时间排序...

order by
   case when hour( columnTime ) < 7 then 2 else 1 end,
   columntime

如果你的时间样本是这样

00:01a
02:27a
05:42a
06:59a
07:00a
10:29a
02:27p
11:59p

预排序的结果会像...

PRESORT  Time
1        07:00a
1        10:29a
1        02:27p
1        11:59p
2        00:01a
2        02:27a
2        05:42a
2        06:59a

通过 SQLFiddle adjusted 更新。函数 HOUR() 返回日期/时间列的数字。你有 HOURS()。现在,函数的参数是保存日期/时间字段的列的名称。我没有你的表结构来知道列名,所以我只是将其称为“columnTime”。根据您拥有的 SQLFiddle 示例,我将其更改为...

HOUR( 小时 ) <-- HOUR() 函数,使用表中的“小时”列

关于php - 对 ORDER BY 查询应用循环移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23760734/

相关文章:

php - 按预设随机排序列表的最有效方法

php - 跳过获取表中不需要的数据

Mysql 错误号 : 150 Cannot create Table

php - 在 SQL 语句中使用 '

php - Mysql_real_escape_string() 警告混淆

php - 如何使用自定义 URL 方案 IOS Objective-c PHP

javascript - 如何在 JavaScript 中从二进制流打开并读取 PDF

php - "Empty delimiter"使用PHP explode()函数时出现警告

PHP - 将数据库信息写入 PHP 文件?

java - 从 Active Directory 获取用户详细信息