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

MySQL查询:筛选CurrTime晚于或等于StartTime的记录

解决方案

要筛选出CurrTime时间部分大于等于StartTime的记录,核心是把CurrTime的时间部分和提取出的StartTime做比较——因为CurrTime是包含日期的完整datetime类型,而StartTime只有时分信息,直接用TIME()函数提取CurrTime的时分秒部分即可完成有效比较。

方法1:使用子查询(推荐,可读性更高)

先通过子查询生成包含StartTime的中间结果,再在外部查询中添加筛选条件:

SELECT *
FROM (
    SELECT
        *,
        CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(EvName, ':', 1), ' ', -1), ":", SUBSTRING_INDEX(SUBSTRING_INDEX(EvName, ':', -1), ' ', 1)) AS StartTime
    FROM uk
) AS temp
WHERE TIME(CurrTime) >= StartTime;

方法2:直接在WHERE子句中重复计算

如果不想用子查询,也可以直接在筛选条件里重复StartTime的提取逻辑,不过这种方式可读性较差,大表查询时可能因重复计算影响性能:

SELECT
    *,
    CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(EvName, ':', 1), ' ', -1), ":", SUBSTRING_INDEX(SUBSTRING_INDEX(EvName, ':', -1), ' ', 1)) AS StartTime
FROM uk
WHERE TIME(CurrTime) >= CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(EvName, ':', 1), ' ', -1), ":", SUBSTRING_INDEX(SUBSTRING_INDEX(EvName, ':', -1), ' ', 1));

关键说明

  • TIME(CurrTime)会从CurrTime中提取出时分秒部分(比如2022-06-01 17:45:39会被提取为17:45:39)
  • MySQL会自动将字符串类型的StartTime(比如17:45)转换为时间类型(补全为17:45:00)进行比较,因此17:45:39 >= 17:45:00会返回true,完全匹配你的筛选需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:54:57