我有以下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
时,我收到以下错误:
从字符转换日期和/或时间时转换失败 串
我认为这与日期部分的两位数有关。
知道是什么原因造成的吗?
答案 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 +' '')))'