我試圖從文本字段中提取日期,日期可能是m/d/yy
,mm/d/yy
,m/dd/yy
或mm/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
謝謝!
爲什麼不使用'date'類型來存儲日期信息的字段? –
這正是我們正在嘗試做的,這是來自我們試圖從中轉換數據的遺留系統,我們試圖從現場獲取日期並將其存儲在單獨的日期時間字段中。 – ipman23
您正在使用哪個數據庫? –