即時通訊使用PHP 5.4.6和MySQL 5.5.29,我將UNIX TIMESTAMP轉換爲MYSQL DATETIME,反之亦然。 Mysql和php wun在同一臺本地機器上。PHP-MYSQL:將Unix時間戳轉換爲DateTime,反之亦然
我有一個簡單的MySQL表
CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);
將數據插入我使用PHP的PDO和MySQL NOW()。這工作正常,正確的日期時間存儲在數據庫中。
我的計劃是在客戶端使用unix時間戳(服務器端的php & mysql)。
所以我想提供unix時間戳到我的客戶端。 因此,我使用MySql UNIX_TIMESTAMP()函數直接在查詢中進行轉換。
因此,一個簡單的查詢看起來是這樣的:
SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry
結果: 創建= 2013年2月14日二十時47分35秒 TS = 1360871255
所以現在我想要做的換句話說,我傳遞了一個UNIX時間戳,並希望將其與數據庫中的條目進行比較。不幸的是我不能寫一個可行的PHP腳本。我不知道爲什麼,但是當我米傳遞相同的時間戳(1360871255)到PHP我不同意這種方法得到2013年2月14日二十時47分35秒:
public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}
當我打電話toDateTime( 1360871255)將返回2013-02-14 20:02:35這不是原來的DateTime。
我知道,我不需要將1360871255格式化爲Y-m-d H:m:s,以便在MYSQL中使用它,但1360871255似乎不是我期望的時間(並且MYSQL UNIX_TIMESTAMP已返回)。
我想要做的是一個簡單的查詢,顯示我的條目是超過一定日期和時間舊,簡單的東西是這樣的:
SELECT * FROM Entry WHERE created < 1360871255
但正如我之前提到的,查詢結果是沒有預期,因爲1360871255似乎不是正確的時間。
我沒有在php中爲mysql連接指定任何特殊的時區。
有什麼建議嗎?
該死的,你的權利... omg ...即時通訊如此愚蠢 – sockeqwe 2013-02-14 20:50:13
@sockeqwe - 你並不愚蠢。你只是俯視它。它發生了。 – Greeso 2017-08-10 17:33:58