2013-11-21 141 views
1

首先 - 我是一個總noob,所以我甚至不知道我是否稱它是正確的。在一個日期更改時間戳

這當然也會影響我搜索時得到的結果。到目前爲止,我還沒有找到我在找什麼。

而在此之上,我的第一語言不是英語......

但這裏有雲:

我有一個使用MySQL中的預約日程表。顯然,php date函數有問題,並且在服務器上有一些補丁。這導致沒有預訂顯示。

我把範圍縮小到在日期時間戳存儲在MySQL的:

舊版本有23:00 GMT隨着時間的 新版本有00:00 GMT隨着時間的

通過手動從存儲的數字中減去82800作爲數據庫中的開始日期和結束日期,我能夠使預訂顯示出來。但有很多預訂,我一直在試圖找到一個解決方案,我可以運行SQL查詢來更新所有預訂。

I would need to test if the date ends in 23:00 GMT 
If true, then subtract 82800 
And go to the next post in the table 

或者至少在這方面的東西。也許甚至有一個解決這個問題的標準方法...

因爲我對此完全陌生,請隨時指向正確的東西去尋找或解決方案的鏈接到別處。

我通過phpMyAdmin訪問數據庫。

+0

帶日期的列是時間戳嗎? – Babblo

回答

1

假設您的列採用適當的日期時間格式,您可以在單個查詢中完成。 (請務必先備份,雖然)。

UPDATE your_table 
SET booking_time = DATE_SUB(booking_time, INTERVAL 23 HOUR) 
WHERE booking_time LIKE '%23:00:00' 

如果是,比方說,VARCHAR,你可能會想要寫PHP,這是會需要更長的時間:

  1. 取回所有預訂。
  2. 循環它們。對於每個預訂:
  3. 使用標準字符串函數來檢查預訂是否是格林威治標準時間23:00。
  4. 如果是,請提取日期時間並使用strtotime()以Unix時間格式獲取。 (如果不是,繼續循環。)
  5. 從Unix時間值中減去82800,並使用date()將其重新格式化爲所需日期。
  6. 用新的時間戳更新數據庫中的預訂行。