Sql 数据转换与提取
我的表有一个具有nvarchar数据类型的字段。该字段包括字母数字字符和日期。如何从字段中提取日期部分?使用Sql 数据转换与提取,sql,reporting-services,type-conversion,Sql,Reporting Services,Type Conversion,我的表有一个具有nvarchar数据类型的字段。该字段包括字母数字字符和日期。如何从字段中提取日期部分?使用CAST进行日期类型转换 SELECT CAST(tstamp AS DATE) CAST在大多数SQL引擎(SQL Server、PostgreSQL、MySQL)上的工作原理完全相同,这取决于数据的外观。例如: declare @field varchar(100) select @field = 'text text 2000/01/01 text text' select co
CAST
进行日期类型转换
SELECT CAST(tstamp AS DATE)
CAST
在大多数SQL引擎(SQL Server、PostgreSQL、MySQL)上的工作原理完全相同,这取决于数据的外观。例如:
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,我们可以为您提供更多帮助。只要日期是mm/dd/yyyy格式,这一点就起作用了。当日期为longdate格式时,我收到“从字符串转换日期和/或时间时转换失败”错误。这里有几个例子:>2016年2月29日。>2/29/2016. >文本文本2016年2月29日文本>正文2016年2月29日正文text@Anonymous如果格式为mm/dd/yyyy,则从以下位置减去2,而不是4:
convert(日期,子字符串(@field,CHARINDEX('/',@field,0)-2,10))
但是如果有不同的格式,那么这将是非常长和复杂的查询。。。通常可以通过以下函数来实现:SUBSTRING
剪切日期,CHARINDEX
查找可以识别日期的字符,并转换,或CAST
将其转换为日期
或日期时间
。查看参考[]@Anonymous,您可能不想听到它,但首先-一列不应包含数据,您需要单独访问这些数据…该字段包含学生的笔记。并非所有的学生都遵循正确的格式,因此我一直在转换数据。@匿名应用程序应该能够管理这一点。不是数据库。您将不得不构建那么多的查询,有多少种可能的格式。最糟糕的情况是“2016年2月29日”——要在字符串中找到它,您需要列出所有12个月并在其中搜索。祈祷,这个月的名字不包含在字符串的其他地方。。。如果有两个或两个以上的日期呢。。。这只能通过一个非常复杂的过程来实现。