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

Laravel Eloquent按带AM/PM的时间字段降序排序失败求助

问题解决

你的代码核心问题是把字段名appointment_time用单引号包裹,MySQL会将其视为普通字符串而非字段值,导致排序逻辑失效。

修正后的代码如下:

TimeModel::where('deleted', 0)
    ->orderBy(DB::raw("STR_TO_DATE(appointment_time, '%l:%i %p')"))
    ->get();

额外注意事项:

  • 确认appointment_time字段的格式与%l:%i %p匹配:%l对应12小时制无前置零的小时(1-12),%i是带前置零的分钟,%p是AM/PM标识。如果你的字段小时带前置零(如09:30 AM),需将%l替换为%h。
  • 若仍有问题,可先执行SQL语句验证转换结果:
    SELECT STR_TO_DATE(appointment_time, '%l:%i %p') FROM time_table WHERE deleted = 0;
    
    排查是否存在格式不匹配的字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:15:26