Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据转换与提取_Sql_Reporting Services_Type Conversion - Fatal编程技术网

Sql 数据转换与提取

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

我的表有一个具有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 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个月并在其中搜索。祈祷,这个月的名字不包含在字符串的其他地方。。。如果有两个或两个以上的日期呢。。。这只能通过一个非常复杂的过程来实现。