2012-06-27 64 views
1

我已經搜索了此轉換並找到了相反的結果。如何將iso-8601時間戳轉換爲MySQL DATETIME

我正在使用圖形API和日期格式拉動Facebook頁面供稿是iso-8601。

我需要將其轉換爲mysql時間戳以將其添加到我的數據庫。大多數搜索結果將mysql提供給iso。

我可以得到一個直接轉換,或者我必須轉換爲Unix然後mysql或類似的東西。

+0

同時,使您的生活簡單由圖形API調用指定要返回UNIX時間http://developers.facebook.com/docs/reference/api/ #dates –

回答

1
SELECT STR_TO_DATE('2012-06-25T20:05:13+0000', '%Y-%m-%dT%H:%i:%s+0000') 

這適用於時區設置爲+0000(FB圖形API通常返回的是什麼)的日期。

我需要日期時間轉換與一個時區以外的其他+0000,你可以拆分datestring首先,在第一部分進行STR_TO_DATE,並使用DATE_ADD在第二部分指定的偏移量添加。

+0

這是一個選擇語句的權利。使用PHP我需要格式化的iso-8601日期格式保存在一個MySQL日期時間戳 –

+0

_「這是一個選擇語句的權利。」_ - 沒有得到你的過去,eagleeye ... _「使用PHP我需要格式化ISO -8601日期格式保存在一個mysql日期時間戳「_ - 你可以把這個函數放到你的SQL查詢中,然後把日期字符串動態地放入它。 – CBroe

+1

@Cbroe建議您在INSERT查詢中使用STR_TO_DATE函數,並允許MySQL將ISO時間字符串轉換爲其內部格式。請注意,您可能希望在插入這些+0000日期之一之前立即執行此MySQL語句,以便時區偏移對於由FB爲您提供的UTC時間正確。 'SET time_zone ='+ 00:00'' –

2

使用MySQL的函數STR_TO_DATE(str,format)在您的更新語句:

UPDATE [table] SET [field] = STR_TO_DATE([your input date], '%Y-%m-%dT%H:%i:%s+0000'); 

STR_TO_DATE功能需要兩個參數1)您的日期字符串和2),可以以同樣的方式被格式化爲mysql DATE_FORMAT()輸出格式請參閱: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

+0

我需要解析的格式在https://en.wikipedia.org/wiki/ISO_8601中作爲此示例進行了描述:2017-09-20T18:12:02 + 00 :00 爲了解析這個問題,我在時區掩碼中添加了一個冒號:'%Y-%m-%dT%H:%i:%s + 00:00' – Rodrigo

相關問題