2016-08-17 142 views
0

我正在使用以'PTxxMxxS'格式存儲時間週期/持續時間的MySQL數據庫。從MySQL數據庫轉換週期/持續時間格式

我想轉換爲標準時間格式,所以例如我想將PT4M17S轉換爲04:17。

我嘗試過STR_TO_DATE和TIME_FORMAT的各種組合,但沒有任何成功。

我已經搜索,但我找不到解決方案 - 我認爲問題的一部分是,我不知道這種類型的時間格式被稱爲。

謝謝。

+1

mysql日期/時間字段是針對實際日期/時間的。你正在存儲間隔/持續時間,它不會乾淨地映射到日期/時間。例如'PT999H'是一個有效的時間間隔,但是如果你將它填充到mysql時間字段中,它會被破壞,因爲mysql時間大約是+/- 838小時。任意的時間間隔應該可以轉換成其他的東西,比如表示秒的原始整數。那些可以很容易地轉換回間隔格式與一些代碼,但你不能轉換/使用損壞的時間值。 –

+0

對於有效的時間段,您可以使用str_to_date()函數將上述格式轉換爲MySQL的時間格式。你究竟試過了什麼? – Shadow

+0

這是一個我不得不從數據庫中獲取數據的數據庫,因此我無法控制其內容 - 時間格式PTxxMxxS只是我必須處理的事情。我嘗試過使用STR_TO_DATE(fieldvalue,'%h:%i:%s)並且與TIME_FORMAT類似 – jhTuppeny

回答

0

str_to_date()功能MySQL文檔說:

服務器掃描STR試圖匹配格式它。

以上表示格式參數用於解析輸入字符串,而不是格式化結果的輸出。這就是您的轉換失敗的原因。

下面的調用會將'PTxxMxxS'格式的時間轉換爲標準的mysql時間格式(不需要指定格式參數中的最後一個S字符,但是可以添加它,如果需要的話,無所謂)。

STR_TO_DATE(fieldvalue, 'PT%iM%s') 

然而,正如@MarcB已指出,MySQL的time data type有其範圍限制,因此使用STR_TO_DATE()函數可能不足以爲你一個簡單的轉換。在應用轉換之前檢查您的數據。

+0

感謝您的回答和所有評論 - 非常感謝。 STR_TO_DATE和TIME_FORMAT的組合工作。 – jhTuppeny