SQL中迄今为止的字符串

SQL中迄今为止的字符串,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,有没有办法将此日期格式快速转换为SQL中的日期 { “date_from”:”22112017”,”date_to”:”22112017”} 这是筛选这些日期之间的数据所必需的 (网上有很多转换条目,但我还没有找到这种格式) 编辑: 错误:从字符串转换日期和/或时间时转换失败。 我所拥有的: @StartDate = '22112017' @EndDate = '22112020' 我需要做的是: SELECT * from tblMy WHERE ReceivedDate BETWEEN

有没有办法将此日期格式快速转换为SQL中的日期

{ “date_from”:”22112017”,”date_to”:”22112017”}
这是筛选这些日期之间的数据所必需的

(网上有很多转换条目,但我还没有找到这种格式)

编辑:

错误:从字符串转换日期和/或时间时转换失败。

我所拥有的:

@StartDate = '22112017'
@EndDate = '22112020'
我需要做的是:

SELECT * from tblMy WHERE ReceivedDate BETWEEN @StartDate AND @EndDate

如果您将JSON修复为不使用样式化双引号(
)并使用标准双引号(
),则可以将其解析为JSON。提取值后,可以在中插入两个
/
字符,然后使用样式代码103(
dd/MM/yyyy
)转换为
日期

DECLARE@String nvarchar(MAX)=N'{“date_from”:“22112017”,“date_to”:“22112017”}”;
选择CONVERT(日期,STUFF(STUFF(OJ.date_from,5,0'/')、3,0'/')、103)作为date_from,
将(日期,STUFF(STUFF(OJ.date_to,5,0'/')、3,0'/')、103)转换为日期
从(值(@String))V(S)
交叉应用OPENJSON(V.S)
从varchar(8)开始的日期,
日期_至varchar(8))OJ;

编辑:

似乎OP已经移动了他们的目标,这与JSON无关

这里的问题是您的文字字符串。当为日期和时间数据类型使用文字字符串时,请使用
yyyyMMdd
yyyy-MM-ddThh:MM:ss.nnnnnnn
,因为无论语言和数据类型如何,它们都是明确的:

DECLARE@StartDate日期,
@结束日期;
SET@StartDate='20171222';
设置@EndDAte='20201122';
挑选*
来自tblMy
在@StartDate和@EndDate之间接收日期;
这应该修复错误“错误:从字符串转换日期和/或时间时转换失败。”


我建议将该值转换为标准SQL Server日期值。这非常简单:

select convert(date, left(val, 4) + substring(val, 3, 2) + right(val, 2))

标准的日期格式是YYYYMMDD。您的是DDMMYYYY,因此字符串操作可以将其转换为正确的格式。当然,您可能应该做的是将值转换为应用程序层中的日期,并将日期值作为参数传入。

您的SQl Server vesrion是什么?@Zhorov SQl Server 2016这实际上是您的字符串?SQL Server的哪个版本?看起来像liek JSON,但是,带有样式化的双引号(
而不是
)。如果您可以修复上面的问题,使引号不被样式化,并且您使用的是最新版本的SQL Server,那么您可以将上面的内容解析为JSON。@Larnu不要看它。它只是一个带有日期的JSON(我想显示日期的格式),您需要将“22112017”转换为日期吗?
DECLARE @EndDate VARCHAR(MAX) = '22112017'
DECLARE @datevar date = CAST(SUBSTRING(@EndDate, 3, 2) + '/' + SUBSTRING(@EndDate, 
1, 2) + '/' + SUBSTRING(@EndDate, 5, 4) AS date);  
SELECT @datevar; 
select convert(date, left(val, 4) + substring(val, 3, 2) + right(val, 2))