2016-02-29 52 views
-1

我的表有一个nvarchar数据类型的字段。该字段包含字母数字字符和日期。我如何从字段中提取日期部分?数据转换和提取

回答

0

使用CAST进行日期类型转换。

SELECT CAST(tstamp AS DATE) 

CAST工作完全在大多数SQL引擎(SQL服务器和PostgreSQL,MySQL的)一样,

0

这取决于数据的样子。例如:

declare @field varchar(100) 
select @field = 'text text 2000/01/01 text text' 

select convert(date,SUBSTRING(@field,CHARINDEX('/',@field,0)-4,10)) 

如果知道,该日期被存储在为yyyy/mm/dd格式,则可以使用上述代码 - 找到第一斜线,从斜线的位置切割串 - 4与长度10.

更具体一些,请提供一些示例,告诉我们您使用的是什么sql server,并且我们可以帮助您更多。

+0

只要日期的格式为mm/dd/yyyy,此功能就可以工作。当日期是长期格式时,我收到“转换日期和/或时间从字符串转换失败”错误。以下是几个示例: > 2016年2月29日。 > 2/29/2016。 > text text 2/29/2016 text。 >文本文本2016年2月29日文本文本 – Anonymous

+0

@Anonymous如果格式为mm/dd/yyyy,那么您将减去2,而不是4从位置: 'convert(date,SUBSTRING(@ field,CHARINDEX('/ ',@ field,0)-2,10))' 但是,如果有不同的格式,那么这将是非常漫长和复杂的查询...它通常可以通过这些功能来实现 - 'SUBSTRING'来剪切日期出来,'CHARINDEX'找到可识别日期的字符,'CONVERT'或'CAST'将其转换为'DATE'或'DATETIME'。 请参阅参考资料[https://msdn.microsoft.com/en-us/library/ms187748.aspx] –

+0

@Anonymous您可能不想听到它,但首先 - 一列不应包含数据,您需要分别访问... –