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

如何从MySQL的timestamp类型字段中仅提取日期和小时?

MySQL提取timestamp字段日期+小时的实现方法

你可以根据自己的MySQL版本和使用场景选择以下任意一种方案,都能得到2022-07-13 07格式的结果:

  • 推荐方案:DATE_FORMAT函数(全版本兼容)
    用MySQL内置的日期格式化函数直接指定输出规则,是最稳妥、适配性最强的写法,MySQL 5.x、8.x全版本都支持:

    SELECT DATE_FORMAT(`Date`, '%Y-%m-%d %H') AS format_time FROM 你的表名;
    

    格式符说明:%Y对应4位年份、%m对应2位补零月份、%d对应2位补零日期、%H对应24小时制的2位补零小时,输出格式完全匹配需求。

  • 简洁写法:LEFT字符串截取
    timestamp类型在参与字符串运算时会自动转成YYYY-MM-DD HH:MM:SS的固定长度格式,前13位刚好是「年-月-日 小时」,直接截取即可:

    SELECT LEFT(`Date`, 13) AS format_time FROM 你的表名;
    

    注意:这个写法仅适用于字段类型是标准timestamp、datetime的场景,如果字段是字符串存储的时间,要先确认所有值格式统一再用,避免截断出错。

  • 高版本方案:DATE_TRUNC时间截断(MySQL 8.0+支持)
    8.0及以上版本的MySQL支持直接把时间截断到指定精度,截断到小时后,分、秒会自动归零为00:00:00,如果后续还要做时间计算可以直接用截断后的timestamp值,只需要字符串输出的话套一层DATE_FORMAT即可:

    -- 直接得到小时精度的timestamp值:2022-07-13 07:00:00
    SELECT DATE_TRUNC('hour', `Date`) AS hour_ts FROM 你的表名;
    -- 转成目标字符串格式
    SELECT DATE_FORMAT(DATE_TRUNC('hour', `Date`), '%Y-%m-%d %H') AS format_time FROM 你的表名;
    

扩展用法:如果需要按小时做数据统计,以上写法可以直接放到GROUP BY子句中使用,示例:

SELECT DATE_FORMAT(`Date`, '%Y-%m-%d %H') AS stat_hour, COUNT(*) AS record_count
FROM target_table
GROUP BY stat_hour;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:39:15