我正在使用SQL Server来解决语法问题。我有一个文本列,列出了日期。看起来像这样
DATE:05/04/2017 AMOUNT:500
此列在每条记录中都相同。我想专门查看日期部分,所以我使用了基本的SUBSTRING
:
Select
Field1, SUBSTRING(Field2, 6, 10)
From
Table1
子SUBSTRING
确实会显示日期,但它是VARCHAR
格式。
我尝试做一个像
这样的基本转换Select
Field1, CONVERT(DATETIME, SUBSTRING(Field2, 6, 10))
From
Table1
但我收到错误
Msg 241,Level 16,State 1,Line 21
从字符串转换日期和/或时间时转换失败。
有谁知道我如何能够以日期格式从字符串中成功提取日期,所以我可以将其链接到其他表格?
答案 0 :(得分:1)
在尝试转换之前,请确保您的服务器set the DATEFORMAT格式正确。由于您显示的样本数据是2017年4月5日,我们无法告诉您是否有MDY或DMY,但您应该能够从其余数据中找出它。
此外,如果您想确切地找到导致转换错误的行,可以使用SQL 2012+中提供的TRY_CONVERT(),然后调查TRY_CONVERT()的结果所在的行。 NULL。
答案 1 :(得分:0)
您需要使用dateformat。
101如果您使用美国标准mm / dd / yyyy 要么 103如果你使用英国的dd / mm / yyyy
declare @temp varchar(30)='DATE:05/04/2017 AMOUNT:500'
Select
CONVERT(DATETIME,SUBSTRING(@temp,6,10),101)
结果:
2017-05-04 00:00:00.000