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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值