我正在一个应用程序中工作,该应用程序存储工作日的工作日安排。为此,我们维护一个计划表和一个存储日期的日历表。
这是调度表的表快照
php - MySQL DAYNAME明智的数据检索在不同的时区-LMLPHP

在我们的应用程序中,当用户选择日期时,将基于该日期的日名显示医生的约会列表。现在,我正在获取日期范围明智的医生所需的数据,例如以下查询,其中未使用任何时区。

select datefield as date,
        (select count(id)
         from appointment_schedules
         where substring(dayname(calendar.datefield),1,3) = appointment_schedules.week_day
         and user_id=$user_id
        )
from calendar
where datefield between '$start_date' and '$end_date'"


现在,我们实现时区明智的约会列表,其中约会列表将基于用户时区显示。由于工作日在时间表表中是固定的,因此我没有找到正确的方法来考虑时区进行检索。例如,如果用户时区与服务器之间的时差为8小时,则在特定时间段内,用户日将比服务器早或晚。我被困在如何在单个查询中显示用户时区每日准确数据的问题上。

任何建议将不胜感激。
提前致谢

最佳答案

下面是一些有关如何处理它的粗略代码,虽然我尚未对此进行测试,但是它应该可以为您解决查询提供足够的信息。

PHP:

$utc_difference = -12;
$week_day = "SUN";
$prev_week_day = "SAT";
$next_week_day = "MON";


MySQL:

WHERE
  (DATE_SUB(start_time, INTERVAL $utc_difference HOUR) < 0 AND  week_day = $prev_week_day)
OR
  (DATE_SUB(start_time, INTERVAL $utc_difference HOUR) > 24 AND  week_day = $next_week_day)
OR
  (DATE_SUB(start_time, INTERVAL $utc_difference HOUR) > 0 AND DATE_SUB(start_time, INTERVAL $utc_difference HOUR) < 24 AND week_day = $week_day)

10-08 17:35