3
我完全難以理解插入的內容。基本上,我試圖通過以UTC格式存儲數據庫中的所有內容,然後根據用戶信息轉換爲本地時區來做正確的事情。我有很多查詢工作得很好,但是這個插入查詢正在向作品投擲扳手。MySQL時區混淆
$adt = date('Y-m-d') . " " . $_POST['Time'];
echo $adt;
$tmp_dt = new DateTime($adt, new DateTimeZone($tz));
echo $tmp_dt->format('H:i:s');
$tmp_dt->setTimezone(new DateTimeZone('UTC'));
$UTC_time = $tmp_dt->format('H:i:s');
echo $UTC_time;
echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />';
mysql_select_db($db_name, $JewelryDB);
mysql_query("SET time_zone = '+00:00';");
$updateSQL = sprintf("INSERT INTO reminder_cfg
(id, day_of, day_of_advance, day_prior, default_time, week_prior, 2_week_prior, 3_week_prior, 4_week_prior, 5_week_prior, day_after, 2_week_after, 50_day_after)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
ON DUPLICATE KEY UPDATE day_of = %s, day_of_advance = %s, day_prior = %s, default_time = %s, week_prior = %s, 2_week_prior = %s, 3_week_prior = %s, 4_week_prior = %s, 5_week_prior = %s, day_after = %s, 2_week_after = %s, 50_day_after = %s",
GetSQLValueString($jeweler, "text"),
GetSQLValueString($_POST['DayOf'], "text"),
GetSQLValueString($_POST['Advance'], "text"),
GetSQLValueString($_POST['DayPrior'], "text"),
GetSQLValueString($UTC_time, "text"),
GetSQLValueString($_POST['WeekPrior'], "text"),
GetSQLValueString($_POST['2WeeksPrior'], "text"),
GetSQLValueString($_POST['3WeeksPrior'], "text"),
GetSQLValueString($_POST['4WeeksPrior'], "text"),
GetSQLValueString($_POST['5WeeksPrior'], "text"),
GetSQLValueString($_POST['DayAfter'], "text"),
GetSQLValueString($_POST['2WeeksAfter'], "text"),
GetSQLValueString($_POST['50DaysAfter'], "text"),
GetSQLValueString($_POST['DayOf'], "text"),
GetSQLValueString($_POST['Advance'], "text"),
GetSQLValueString($_POST['DayPrior'], "text"),
GetSQLValueString($_POST['Time'], "text"),
GetSQLValueString($_POST['WeekPrior'], "text"),
GetSQLValueString($_POST['2WeeksPrior'], "text"),
GetSQLValueString($_POST['3WeeksPrior'], "text"),
GetSQLValueString($_POST['4WeeksPrior'], "text"),
GetSQLValueString($_POST['5WeeksPrior'], "text"),
GetSQLValueString($_POST['DayAfter'], "text"),
GetSQLValueString($_POST['2WeeksAfter'], "text"),
GetSQLValueString($_POST['50DaysAfter'], "text"));
$Result1 = mysql_query($updateSQL, $JewelryDB) or die("Insert query error: " . mysql_error());
回聲語句中的代碼顯示,我的時區轉換工作正常,但插入語句不知何故減去5小時插入時間在本地時區。這是一個共享/託管服務器,所以我不能簡單地將系統時間設置爲UTC。我認爲MySQL的「SET time_zone」會解決這個問題。
請幫忙。這讓我瘋狂。
更好地存儲在時間戳。 – 2013-03-27 12:18:18
除了你的問題之外,從mysql_開始的PHP函數從PHP 5.5.0開始已被棄用。如果您有能力這樣做,請考慮更新您的代碼以改爲使用MySQLi或PDO擴展。 – dnagirl 2013-03-27 12:21:50
您可以使用'CONVERT_TZ'。 – fedorqui 2013-03-27 12:22:00