2017-08-15 74 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