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

使用Google SQL将TIME(1-24)类型转换为五类字符串时段

解决方案:单查询内实现时段分类

完全不需要创建单独的转换表,直接在单个SQL查询里就能完成start_time_of_day的时段分类,用CASE语句即可实现,步骤如下:

1. 将时间字段转换为整数分钟数

把HH:MM格式的时间转成当天的总分钟数,方便做区间判断,比如:

  • 03:01 → 3*60 + 1 = 181
  • 07:00 → 7*60 = 420
    不同数据库的转换函数略有差异,以MySQL为例:
-- 转换为当天总分钟数
TIME_TO_SEC(start_time_of_day) DIV 60 AS time_minutes

2. 用CASE语句匹配时段类别

基于转换后的分钟数,通过CASE判断所属时段,注意深夜(Late Night)是跨天区间,需要单独处理:

SELECT
    start_time_of_day,
    CASE
        WHEN TIME_TO_SEC(start_time_of_day) DIV 60 BETWEEN 181 AND 420 THEN '凌晨(Early Morning)'
        WHEN TIME_TO_SEC(start_time_of_day) DIV 60 BETWEEN 421 AND 720 THEN '上午(Morning)'
        WHEN TIME_TO_SEC(start_time_of_day) DIV 60 BETWEEN 721 AND 1020 THEN '下午(Afternoon)'
        WHEN TIME_TO_SEC(start_time_of_day) DIV 60 BETWEEN 1021 AND 1320 THEN '傍晚(Evening)'
        WHEN TIME_TO_SEC(start_time_of_day) DIV 60 > 1320 OR TIME_TO_SEC(start_time_of_day) DIV 60 <= 180 THEN '深夜(Late Night)'
    END AS time_period
FROM your_table_name;

3. 为什么不用单独建表?

这种时段规则是固定静态的,直接写在查询里更简洁高效,不需要额外维护映射表。除非后续时段规则需要频繁修改,那时建表存储映射关系会更便于维护,但当前场景下,单查询实现是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:06:15