laravel mysql 时区_laravel - MySQL将时间戳转换为用于搜索查询的时区_laravel_酷徒编程知识库...

我有一个MySQL数据库,有一个带有orders和timestamp列created_at的表

所有时间戳均以UTC格式存储,并转换回前端的用户本地时间-当前设置为“'Europe/London”,

用户可以搜索在特定日期之间创建的所有订单,在MySQL中,我使用以下函数将日期转换回本地时区,例如:SELECT *

FROM orders

WHERE DATE(CONVERT_TZ(created_at, 'UTC','Europe/London')) >= '27-10-2019'

AND DATE(CONVERT_TZ(created_at, 'UTC','Europe/London')) <= '27-10-2019'

我想将其保留为'UTC'以适应将来的其他时区。

是否有办法在不使用命名时区的情况下返回正确的结果?

请注意,查询实际上是使用php中的laravels eloqeunt查询生成器编写的,如下所示:if (isset($queryString['from_date'])) {

$query = $query->whereRaw('DATE(orders.created_at) >= ?', [Carbon::parse($queryString['from_date'])->format('Y-m-d')]);

}

if (isset($queryString['to_date'])) {

$query = $query->whereRaw('DATE(orders.created_at) <= ?', [Carbon::parse($queryString['to_date'])->format('Y-m-d')]);

}

起初,我认为解决方案是将用户输入的日期也转换为UTC,但是当我在以下日期创建订单时,结果将丢失第二条记录:created_at

-------------------------------------------------------------

27-10-2019 00:00 (localtime) - saved as 26-10-2019 23:00 (UTC)

27-10-2019 01:00 (localtime) - saved as 27-10-2019 00:00 (UTC)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值