[英]comparing datetime variables
How do I compare datetime variable passed to the store procedure with datetime variable in the table. 如何将传递给存储过程的datetime变量与表中的datetime变量进行比较。
eg In my where clause @paramDate value is 2/10/2012 例如在我的where子句中@paramDate的值是2/10/2012
set sql = 'WHERE product.RegisteredDate >= ' + @paramDate
when I exec(@sql) 当我执行(@sql)
it fails, Error: 失败,错误:
Conversion failed when converting datetime from character string.
Thx 谢谢
SET @sql = '... WHERE product.RegisteredDate >= '''
+ CONVERT(CHAR(8), @paramDate, 112) + ''';';
If @ParamDate
is NULL
you can probably do this: 如果
@ParamDate
为NULL
,则可以执行以下操作:
SET @sql = 'SELECT ...';
SET @sql = @sql + COALESCE(' WHERE product.RegisteredDate >= '''
+ CONVERT(CHAR(8), @paramDate, 112) + ''';', '');
Or even: 甚至:
SET @sql = 'SELECT ...';
IF @paramDate IS NOT NULL
BEGIN
SET @sql = @sql + '... WHERE product.RegisteredDate >= '''
+ CONVERT(CHAR(8), @paramDate, 112) + ''';';
END
Try this: 尝试这个:
CONVERT(varchar, @paramDate, 101)
See here for more information: http://msdn.microsoft.com/en-us/library/ms187928.aspx 请参阅此处以获取更多信息: http : //msdn.microsoft.com/zh-cn/library/ms187928.aspx
Since you're trying to execute a dynamic query, you could use sp_executesql instead of exec so that you can use parameters in your generated query. 由于您尝试执行动态查询,因此可以使用sp_executesql代替exec,以便可以在生成的查询中使用参数。 Here are the details for sp_executesql .
这是sp_executesql的详细信息。
For example: 例如:
set @sql = 'WHERE product.RegisteredDate >= @dynamicParm'
EXECUTE sp_executesql @sql, N'@dynamicParm DATETIME', @dynamicParm = @paramDate
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.