SQL Server中的转换错误

时间:2016-09-11 08:08:17

标签: sql-server

我有以下SQL查询作为参数获取日期(开始日期和结束日期的一个参数,以逗号分隔),并且应该返回这些日期之间的所有值。

(长期查询 - 我只发布相关部分)

Set @SQLQuery = @SQLQuery + 'And (o.Date >= LEFT(''' + @Date + ''', charindex('','',''' + @Date+ ''') - 1)' 
+ ' AND o.Date <= RIGHT(''' + @Date + ''', charindex('','',''' + @Date+ ''') - 1)) '

日期参数的格式为:

start date,end date in MM,DD,YYYY format

例如,当日期参数为8-5-2015,08-9-2016时,它可以正常工作,但当它是8-5-2015,08-11-2016时,我收到以下错误:

  

从字符转换日期和/或时间时转换失败   串

我认为这与日期部分的两位数有关。

知道是什么原因造成的吗?

2 个答案:

答案 0 :(得分:3)

似乎是Right函数内部的逻辑问题。请使用以下逻辑,我已添加长度功能以正确找到正确的日期。

Set @SQLQuery = @SQLQuery + 'And (o.Date >= LEFT(''' + @Date + ''', charindex('','',''' + @Date+ ''') - 1)' 
+ ' AND o.Date <= RIGHT(''' + @Date + ''', len(''' + @Date+ ''') - charindex('','',''' + @Date+ '''))) '

答案 1 :(得分:1)

将查询更改为以下类型:

设置@SQLQuery = @SQLQuery +'和(o.Date&gt; = LEFT('''+ @Date +''',charindex('','','''+ @ Date +''') - 1)' +'和o.Date&lt; = RIGHT('''+ @Date +''',LEN('''+ @ Date +''') - charindex('','','''+ @ Date +' '')))'