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

MySQL中datetime类型提取时间及下午2点后发货订单查询问题

嘿,我来帮你搞定这两个MySQL的问题!

问题1:如何在MySQL中从datetime数据类型中选取时间?

要从datetime类型字段里提取单独的时间部分,MySQL有个超实用的TIME()函数,用起来特别简单!比如你有个ship_date字段是datetime类型,想要单独取出时间,直接执行这条SQL就行:

SELECT order_id, TIME(ship_date) AS ship_time FROM orders;

这个函数会精准提取datetime字段里的时间部分(比如14:30:45),返回一个标准的TIME类型结果,完全满足你的需求~

问题2:筛选下午2点之后发货的订单SQL语句错误解决

你的原语句出错主要有两个核心问题:一是误用了模糊匹配的通配符,二是直接拿格式字符串和datetime字段比较的逻辑不对。我给你两种靠谱的解决方法:

方法1:提取时间部分直接比较

用刚才提到的TIME()函数,把ship_date的时间部分单独提取出来,再和下午2点的时间值14:00:00做比较,这样不管订单是哪一天的,只要发货时间在下午2点及以后都会被筛选出来:

SELECT order_id, ship_date FROM orders WHERE TIME(ship_date) >= '14:00:00';

方法2:拼接日期与指定时间比较

如果你想更严谨地针对每条记录的日期,拼接当天的14点来做比较,也可以用这种写法:

SELECT order_id, ship_date FROM orders WHERE ship_date >= CONCAT(DATE(ship_date), ' 14:00:00');

原语句错误原因拆解

  • 你用的'%y-%m-%d 14%-%-%'里的%是LIKE查询专用的通配符,直接和datetime字段做>=比较时,MySQL无法正确解析这种格式;
  • 另外,%y代表两位年份,如果你数据库里存的是四位年份(比如2024),应该用%Y,不过这里根本不需要用模糊匹配的写法,直接针对时间部分处理就够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:11:54