Laravel查询中为start_date增加5小时的实现求助
问题解决:查询时为start_date字段增加5小时
你当前代码的问题在于错误地将PHP的strtotime()函数直接传入了selectRaw(),这会在PHP层面执行函数而非让数据库处理时间计算,无法实现预期效果。以下是正确的实现方式:
针对MySQL数据库的写法
直接使用MySQL原生的DATE_ADD函数在SQL层面完成时间偏移:
$data = Ticket::selectRaw('DATE_ADD(start_date, INTERVAL 5 HOUR) AS adjusted_start_date') ->limit($request->limit) ->offset($request->offset) ->get();
通过AS adjusted_start_date给处理后的字段设置别名,后续可以通过$item->adjusted_start_date获取该值。
针对PostgreSQL数据库的写法
如果使用PostgreSQL,语法略有不同:
$data = Ticket::selectRaw('start_date + INTERVAL \'5 hours\' AS adjusted_start_date') ->limit($request->limit) ->offset($request->offset) ->get();
注意事项
确保start_date字段在数据库中是DATETIME、TIMESTAMP这类标准时间类型,这样数据库才能正确识别并执行时间运算。
内容的提问来源于stack exchange,提问作者MaditionSky
相关产品推荐
相关产品推荐

