如何获取考虑时区的时间范围之间创建的 Laravel 记录

问题描述 投票:0回答:1

我有一个 Laravel 应用程序,我每小时采样一次数据并将其存储在数据库中。

现在我想检索在欧洲/阿姆斯特丹时区 12:00 左右创建的所有记录。 (该时区有夏令时)

例如,如果我有以下created_at的记录

  • 2023-10-28 08:59:00
  • 2023-10-28 10:01:00
  • 2023-10-28 11:01:00
  • 2023-10-28 11:59:00
  • 2023-10-28 13:01:00
  • ...
  • 2023-10-29 09:01:00
  • 2023-10-29 10:01:00
  • 2023-10-29 10:59:00
  • 2023-10-29 12:00:00
  • 2023-10-29 13:01:00
  • ...
  • 2023-10-30 09:00:00
  • 2023-10-30 10:01:00
  • 2023-10-30 11:00:00
  • 2023-10-30 12:01:00
  • 2023-10-30 13:00:00

我想检索created_at所在的记录:

  • 2023-10-28 11:01:00
  • 2023-10-29 10:01:00
  • 2023-10-30 10:01:00

任何人都可以帮助我如何为此创建 Eloquent 查询吗?

mysql laravel eloquent
1个回答
0
投票

在此代码片段中,

CONVERT_TZ(created_at,'+00:00','+01:00')
用于将
created_at
时间戳从UTC转换为欧洲/阿姆斯特丹时区。
TIME
函数从时间戳中提取时间部分。随后使用
whereRaw
方法来过滤记录,仅选择时间在 11:00:00 到 12:00:00 之间的记录。

$records = DB::table('your_table')
    ->whereRaw("TIME(CONVERT_TZ(created_at,'+00:00','+01:00')) >= ?", ['11:00:00'])
    ->whereRaw("TIME(CONVERT_TZ(created_at,'+00:00','+01:00')) <= ?", ['12:00:00'])
    ->get();
© www.soinside.com 2019 - 2024. All rights reserved.