我在尝试设置两个变量(从日期和截止日期)时遇到问题。一旦我解决了一个问题,另一个就很容易解决了。我收到错误:
将 nvarchar 值 '06/30/2012' 转换为数据类型 int 时转换失败。
值得注意的是,我使用视图将各种表放在一起,然后通过sp_executesql
. 当我打印我的查询时,我可以看到它识别@fromdate
为 0,也许这就是问题所在。
declare @fromdate nvarchar
declare @todate nvarchar
select @fromdate = '03/01/1999'
select @todate = ''
IF @fromdate <> ''
BEGIN
SELECT @sql = @sql + ' and convert (nvarchar,document_Date,101) > '+@fromdate+''
END
if @todate <> ''
BEGIN
SELECT @sql = @sql + ' and convert(nvarchar,document_date,101) > '+@todate+''
END
该列document_date
是日期时间。有任何想法吗?如果是这样,您能否解释为什么会发生这种情况,以便我可以学习并避免将来发生这种情况?我在下面包含了打印 SQL。
SELECT [system_status]
,[document_status_code]
,[rpt_category]
,[category]
,[user_status_cd]
,[user_status]
,[assigned_to_id]
,[assigned]
,[assigned_to_date]
,[owner_id]
,[owner]
,[rpt_acct_code]
,[acct_name]
,[rpt_title]
,[job_name]
,[logged_time]
,[rpt_format_type]
,[rpt_run_id]
,[rpt_doc_id]
,[rpt_id]
,[rpt_filename]
,[rpt_file_path]
,[rpt_run_name]
,[sla_start_date]
,[sla_due_date]
,[sla_completed_date]
,[sla_status]
,[SLA_Days]
,[Document_Date]
FROM VW_Document_Main
WHERE 1=1 and convert (nvarchar,document_Date,101) > 0
order by document_status_code ,owner_id