协助修改现有的MySQL日期时间值(从中央时间到UTC时间)?

时间:2019-05-22 15:21:09

标签: mysql dst datetimeoffset

该数据库已有大约四年的历史,因此本地日期时间值(针对三个不同的变量)在夏令时和标准时间中均取决于切换发生的时间。 考虑到将日期从-6小时更改为-5小时,我如何将所有日期时间值(2019-05-21 21:31:45)从CST / CDT转换为UTC?后续问题将是如何确保用户仅看到他的本地时间?

我看着;

Update `NetLog-test` SET logdate = DateADD(hour, +6, logdate );

但是在我看来,这将更改所有logdate值,而无需考虑CDT何时更改为CST。在我的PHP文件中,我正在执行以下操作,以控制用户看到并使用的内容。我只是在适当的日子将CONST_SERVER_TIMEZONE值从EDT更改为CDT。我现在意识到这不是一个好选择。

define('CONST_USER_TIMEZONE', 'America/Chicago');
    /* server timezone */
    define('CONST_SERVER_TIMEZONE', 'EDT'); /* CDT for standard time, EDT for daylight  */ 

    /* server dateformat */
    define('CONST_SERVER_DATEFORMAT', 'Y-m-d H:i:s');


function now($str_user_timezone = CONST_USER_TIMEZONE,
           $str_server_timezone = CONST_SERVER_TIMEZONE,
         $str_server_dateformat = CONST_SERVER_DATEFORMAT) {

  // set timezone to user timezone
  date_default_timezone_set($str_user_timezone);

  $date = new DateTime('now');
  $date->setTimezone(new DateTimeZone($str_server_timezone));
  $str_server_now = $date->format($str_server_dateformat);

  // return timezone to server default
  date_default_timezone_set($str_server_timezone);

  return $str_server_now;
}

$open  = now(CONST_USER_TIMEZONE,CONST_SERVER_TIMEZONE,CONST_SERVER_DATEFORMAT);

0 个答案:

没有答案