【问题标题】:MySQL DAYNAME wise data retrieving for different timezoneMySQL DAYNAME 明智的数据检索不同时区
【发布时间】:2019-11-06 14:49:39
【问题描述】:

我正在一个应用程序中工作,我们在该应用程序中存储医生预约日程安排以工作日为基础。为此,我们维护了一个日程表和一个存储日期的日历表。 这是计划表的表快照

在我们的应用程序中,当用户选择一个日期时,医生的预约列表会根据该日期日期名称显示。现在,我正在获取医生的日期范围所需的数据,如下面的查询,其中没有使用时区。

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 mysql sql database


【解决方案1】:

下面是一些关于如何处理它的粗略代码,我尚未对此进行测试,但它应该足以解决您的查询。

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多