2017-09-26 71 views
0

我不確定這是否可以使用除正則表達式或其他一些奇特的解決方案之外的任何其他功能來完成,但這裏是我需要做的。SQL - 使用另一個字段的字符串的一部分更新字段

A欄:標準SQL的日期時間值

B欄: 下面是關於這一些意見:有,我需要從

提取數據的典型列B值會是什麼樣值varchar字段document創建日期:2011-08-17T20:10:3​​3Z修改日期:2011-06-22T17:54:23Z

創建日期/修改日期源自另一個系統,並插入此字段以供審查用戶。

我想要做的是拉出創建日期值並更新列A進行匹配。我意識到我需要做一些日期時間格式轉換,但這個腳本實際上會有多難?我想不出一種方法來從該字符串中拉出創建日期:2011-08-17T20:10:3​​3Z並將其用作更新列A的值。如果轉換該日期值證明過於困難,只需使用日期部分就可以接受,如'2011-08-17'

謝謝!

+0

你還沒說過你到目前爲止試過的東西!這裏有一個提示,讓你開始... DECLARE @x varchar(100)='等等創建日期:2011-08-17T20:10:3​​3Z修改日期:2011-06-22T17:54:23Z'; SELECT @x original_data ,CHARINDEX( '日期:',LTRIM(RTRIM(@x)))FirstIndexOfdate ,CHARINDEX( '日期:',LTRIM(RTRIM(@x)),(CHARINDEX( ' - ' ,LTRIM(RTRIM(@x)))+1))SecondIndexOddate GO 看看我要去哪裏? – Harry

+0

謝謝你。我沒有發佈任何內容的主要原因是我對正則表達式不太好。所以如果正則表達式是唯一的方法,那麼我需要找到正確地做到這一點的幫助。你認爲這是唯一的選擇嗎? – mikecferrara

+0

根本不是......我上面的代碼會給你第一個日期的位置:第二個日期:在列內......你應該能夠基於此提取值。給它一個去看看你是否可以得到價值..別的可以提供更多的幫助..這可能是更好的方式比給你在代碼中的確切答案。 – Harry

回答

0

嘗試看看這是否工作..基本上這會找到第一個日期,並從那裏獲取值,然後第二個日期和值後面的..這假定所有條目遵循您指定的格式。

DECLARE @x varchar(100) = 'blah blah Create Date: 2011-08-17T20:10:33Z Modify Date: 2011-06-22T17:54:23Z'; 

SELECT @x original_data 

, CHARINDEX('Date:',LTRIM(RTRIM(@x))) FirstIndexOfdate 

,CHARINDEX('Date:',LTRIM(RTRIM(@x)), (CHARINDEX('Date:', LTRIM(RTRIM(@x)))+1)) SecondIndexOfdate 

,substring (@x,CHARINDEX('Date:',LTRIM(RTRIM(@x)))+5,11) first_date 

,substring (@x,CHARINDEX('Date:',LTRIM(RTRIM(@x)), (CHARINDEX('Date:', LTRIM(RTRIM(@x)))+1)) +5,11) 
相關問題