PLATFORM: PHP & mySQL的PHP的MySQL - UNIX_TIMESTAMP不等於的strtotime
我存儲在以下列格式數據庫的日期+時間:日期( 「Y-M-d H:I:S」)。我的數據庫中有一個值的示例是:2010-01-05 07:36:33。在我的劇本,我已經設置了時區爲date_default_timezone_set("America/Chicago");
問題:
我在其他地方見過的UNIX_TIMESTAMP,我用的是我的查詢。 UNIX_TIMESTAMP對來自DB的日期值的值似乎與strotime(DB日期值)不同。
例:
考慮到在我的數據庫日期列的DB值之一是2010-01-05 7點36分33秒 現在,如果我以下列方式獲取此日期:
$result = mysql_query("SELECT date, UNIX_TIMESTAMP(date) AS ut_date FROM table");
$row = mysql_fetch_row($result);
//The result of this is:
$row['date'] = 2010-01-05 07:36:33
$row['ut_date'] = 1262657193
strtotime($row['date']) gives 1262698593
對於我的我的應用程序中進一步計算,我需要的strtotime(日期)工作。我有很多比較這樣做。如果UNIX_TIMESTAMP(日期)與strtotime(日期)相同,我的問題就可以解決。其中一個樣本查詢,我需要的工作,就是:
$gap = 1; // time in minutes
$tm2 = date ("Y-m-d H:i:s", mktime (date("H"),date("i")-$gap,date("s"),date("m"),date("d"),date("Y")));
$target = strtotime($tm2);
$result2 = mysql_query("UPDATE table2 SET stat = 0 WHERE UNIX_TIMESTAMP(today_login_time) < $target ");
以上是給我的不正確的結果。如果我試圖在上面的查詢中用strtotime代替UNIX_TIMESTAMP,它會給我一個錯誤,因爲strtotime函數似乎是PHP函數而不是相應的mySQL函數。 strtotime是否有相應的mySQL函數?我如何解決上述問題? 代碼高度讚賞解決上述問題。
預先感謝您。
我的確將時區設置爲date_default_timezone_set(「America/Chicago」)。那我現在怎麼解決這個問題?謝謝。 – Devner 2010-01-05 15:36:18
例如通過爲MySQL服務器設置相同的時區,可以是全局的(例如在.ini文件中),也可以是基於每個會話('SET time_zone ='America/Chicago''應該可以工作)。您也可以通過使用MySQL的UTC_TIMESTAMP()或直接通過UNIX_TIMESTAMP()發送unix時間戳來恢復UTC時區,請參閱http://dev.mysql.com/doc/refman/5.1/en/date-and-time -functions.html – VolkerK 2010-01-05 17:35:19
感謝您的信息。所以我只使用SET time_zone ='America/Chicago';在腳本的頂部做出這個工作?這足夠嗎?我不確定Web主機是否會給我.ini文件進行調整。所以如果這是我可以通過我的腳本編碼進行管理的東西,那將會很棒。請告訴我。謝謝。 – Devner 2010-01-05 19:55:16