You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL/MariaDB电影放映数据按4时段格式化技术咨询

按时段分组展示电影放映时间的MySQL查询方案

我来帮你搞定这个需求!要把电影放映时间按指定的四个时段分组展示,用MySQL的条件聚合就能轻松实现,给你写个现成的查询语句:

SELECT
  film,
  -- 14:00前的时段(morning)
  GROUP_CONCAT(CASE WHEN time < '14:00:00' THEN TIME_FORMAT(time, '%H:%i') END SEPARATOR ' ') AS morning,
  -- 14:00-17:00的时段(afternoon)
  GROUP_CONCAT(CASE WHEN time >= '14:00:00' AND time < '17:00:00' THEN TIME_FORMAT(time, '%H:%i') END SEPARATOR ' ') AS afternoon,
  -- 17:00-19:00的时段(evening)
  GROUP_CONCAT(CASE WHEN time >= '17:00:00' AND time < '19:00:00' THEN TIME_FORMAT(time, '%H:%i') END SEPARATOR ' ') AS evening,
  -- 19:00后的时段(night)
  GROUP_CONCAT(CASE WHEN time >= '19:00:00' THEN TIME_FORMAT(time, '%H:%i') END SEPARATOR ' ') AS night
FROM
  your_table_name -- 这里替换成你的实际表名
WHERE
  date = '2017-03-27' -- 如果只需要查询特定日期,保留这句;要查所有日期就删掉
GROUP BY
  film;

关键逻辑说明:

  • GROUP_CONCAT:用来把同一电影同一时段的多个放映时间拼接成空格分隔的字符串,完美适配同一时段有多场放映的场景;如果每个时段最多一场,也可以用MAX()代替,效果是取该时段的唯一时间。
  • TIME_FORMAT(time, '%H:%i'):把数据库里的完整时间格式化为小时:分钟的简洁形式,和你期望的输出格式一致。
  • CASE WHEN:判断每条放映时间属于哪个时段,符合条件就返回格式化后的时间,否则返回NULL,GROUP_CONCAT会自动忽略NULL值,不会在结果里留空字符串。
  • GROUP BY film:确保每个电影只输出一行,对应四个时段的放映时间集合。

用你给的示例数据测试的话,输出结果会和你期望的完全一致:

filmmorningafternooneveningnight
Lady Bird13:4020:00
I, Tonya15:4017:00

内容的提问来源于stack exchange,提问作者user3157493

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:26:02