提取整數值我有2列:nvarchar的拆分成在MySQL
Duration | ID
0h 7m 55sec. | 1
0h 25m 33sec.| 2
10h 5m 5sec. | 3
4h 11m 31sec.| 4
持續時間(爲nvarchar(255)) 我想要計算以秒爲單位的每個ID總數的持續時間。 我嘗試使用SUBSTRING,然後CAST,但它沒有給我所需的輸出。任何幫助,將不勝感激。
提取整數值我有2列:nvarchar的拆分成在MySQL
Duration | ID
0h 7m 55sec. | 1
0h 25m 33sec.| 2
10h 5m 5sec. | 3
4h 11m 31sec.| 4
持續時間(爲nvarchar(255)) 我想要計算以秒爲單位的每個ID總數的持續時間。 我嘗試使用SUBSTRING,然後CAST,但它沒有給我所需的輸出。任何幫助,將不勝感激。
這個答案是針對MySQL的,因爲問題最初是標記的。
Yuck。但你可以這樣做:
select (substring_index(col, 'h ', 1) * 60 * 60 +
substring_index(substring_index(col, 'm ', 2), ' ', -1) * 60 +
substring_index(substring_index(col, 'sec.',1),' ', -1)
) as duration_secs
from t;
這提取每個組件,然後使用隱式轉換進行計算。
非常感謝Gordon Linoff。你能建議一種在Sql服務器上做同樣的方法嗎? –
@Pradeep Yadav ...如果你想要一個SQL Server的答案,請將你的問題標記爲SQL Server - 它目前在MySQL中被標記。 – RMathis
@RMathis我試圖在MySQL和SQL服務器上執行相同的操作。但是我現在已經爲SQL服務器添加了一個標籤。感謝您的建議。 –
以下查詢使用str_to_date來投射字符串,time_to_sec函數將時間部分轉換爲秒。
如果持續時間超過23小時59分59秒,則此方法將中斷。 @Gordon Linoff的方法將處理這種情況。
select id,
duration,
time_to_sec(str_to_date(duration,'%Hh %im %ssec.')) as seconds_elapsed;
SUBSTRING然後CAST是做的方式,分享你有什麼? –
嗨,亞歷克斯,謝謝你驗證。但問題是,我不知道如何在'h''m'''上分割nvarchar當我使用Substring(Duration,4,CharIndex('m',Duration)) 它給了我例如7m 55而不僅僅是7 –
再一次,發佈你所擁有的,Stack Overflow不是一個代碼寫入服務,而是希望你自己嘗試編寫代碼。我建議你對你的問題做一些研究(也許試試頁面頂部的搜索框),並嘗試自己編寫一些代碼。如果/當您遇到任何與您的代碼有關的問題時,請再次提問並解釋您所嘗試的內容,以及爲什麼它不適合您。請參閱[如何提問](http://stackoverflow.com/help/how-to-ask)尋求幫助,提出一個很好的問題以及[最小,完整,可驗證的示例](http://stackoverflow.com/幫助/ MCVE)。 – bc004346