2017-08-15 68 views
0

我試圖從文本字段中提取日期,日期可能是m/d/yy,mm/d/yy,m/dd/yymm/dd/yy的格式。我想查詢返回的日期爲Datetime(最好在mm/dd/yyyy格式),這裏有一些例子:從文本字段提取不同格式的日期

表名:tblNote 字段名稱:Notetext

注意總結:99年1月2日週一...

報告:06年2月3日星期二...

用戶打電話:98年3月11日星期三...

客戶反饋:15年4月22日星期四。 ...

有沒有一種簡單的方法來完成這一點,在此先感謝!

這裏是我的表: CREATE TABLE [DBO] [myNote]( [NOTETEXT] VARCHAR NULL )

INSERT INTO mynote VALUES (注摘要:17年4月1日星期一) , - m/d/yy ('Report:04/1/17 Tuesday'), - mm/d/yy ('用戶在4/01/11週三'), - m/dd/yy ('客戶反饋意見:04/01/17 Thursday'), - mm/dd/yy ('被告人注意:7/13/11 ...熟練。已死亡...案件撤回... EJG ')

SELECT notetext, CONVERT(日期,SUBSTRING(notetext,CHARINDEX( '/',notetext)-2,8-),1)作爲DateAsDate FROM myNote

- 結果: notetext | DateAsDate ----- | ----- 注意摘要:4/1/17 Monday | 2017-04-01 舉報:04/1/17 Tuesday | 2017-04-01 用戶於4/01/11週三| 2011-04-01 客戶反饋:04/01/17 Thursday | 2017-04-01 被告備註:7/13/11 ...敏捷。已故...案件撤回... EJG | 2011-07-13

一切偉大的工程,到目前爲止,不過,我複製,從我的轉換表的記錄,它看起來與我的腳本第五記錄,但是,當我跑了相同的查詢,我得到了跟隨錯誤。

Msg 241,Level 16,State 1,Line 1 從字符串中轉換日期和/或時間時轉換失敗。

這是在我的表什麼是現在:

注意總結:17年4月1日星期一 報告:17年4月1日星期二 用戶打電話:11年4月1日週三 客戶反饋:04/01/17星期四 被告備註:7/13/11 ...敏捷。已死亡......案件被撤銷...... EJG 被告人備註:7/13/11 ...敏捷。已死亡...案件撤回... EJG

這是我的數據庫與表的副本,你應該能夠恢復數據庫和重複的問題。 https://drive.google.com/file/d/0B_MJBFXS2FWfWVBBdVhkS1R6RG8/view?usp=sharing

謝謝!

+0

爲什麼不使用'date'類型來存儲日期信息的字段? –

+0

這正是我們正在嘗試做的,這是來自我們試圖從中轉換數據的遺留系統,我們試圖從現場獲取日期並將其存儲在單獨的日期時間字段中。 – ipman23

+0

您正在使用哪個數據庫? –

回答

0

那麼,幸運的是你的格式幾乎是一樣的,它只會延遲月份或日期的位數。
這意味着你可以簡單地使用CONVERT,因爲SQL Server會知道如何處理這個。

(保存我們在你未來的問題,這一步)創建和填充示例表:

DECLARE @T AS TABLE 
(
    DateAsString varchar(8) 
) 

INSERT INTO @T VALUES 
('4/1/17'), -- m/d/yy 
('04/1/17'), -- mm/d/yy 
('4/01/17'), -- m/dd/yy 
('04/01/17') -- mm/dd/yy 

查詢:

SELECT DateAsString, 
     CONVERT(Date, DateAsString, 1) As DateAsDate 
FROM @T 

結果:

DateAsString DateAsDate 
4/1/17   01.04.2017 00:00:00 
04/1/17   01.04.2017 00:00:00 
4/01/17   01.04.2017 00:00:00 
04/01/17  01.04.2017 00:00:00 

You can see a live demo on rextester.

+0

Hi Zohar, 感謝您的迴應!我曾嘗試過「轉換」,但由於某種原因,它不適用於我的所有記錄。我知道如果使用腳本添加數據,它的工作沒有問題,但是,當我從表中複製一些記錄時,查詢對某些記錄不起作用,這很奇怪。 – ipman23

+0

請不要將cofe粘貼到評論中。改爲編輯你的問題。 –

+0

對不起,我是新手,我正在學習...... – ipman23