我试图从文本字段中提取日期,日期可能是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
您正在使用哪个数据库? –