![](/img/trans.png)
[英]How to fix the error - Operand type clash: date is incompatible with int
[英]Error: 'Operand type clash: date is incompatible with int ' on date type
我在SQL Server中有一个带有date
数据类型列的表。
我想选择ExpireDate >= Datetime.Now
我使用存储过程。
ALTER PROCEDURE [dbo].[Ad_SelectByCommand]
@Where varchar(max),
@SQLSort varchar(max)
AS
DECLARE @query varchar(max);
IF @Where <> N'' SET @Where = N' WHERE ' + @Where
IF @SQLSort <> N'' SET @SQLSort = N' ORDER BY ' + @SQLSort
SET @query = 'SELECT [Id], [Name], [Description], [Image], [ExpireDate], [Cost], [IsPayment] FROM [dbo].[Ad]' + @Where + @SQLSort
EXEC(@query)
并在C#中使用它:
var list = clsAdFactory.GetAllByCommand("ExpireDate>=" + DateTime.Now.ToShortDateString());
和
var list = clsAdFactory.GetAllByCommand("ExpireDate>=" + DateTime.Now.ToString("dd/MM/yyyy"));
但是我得到了错误
操作数类型冲突:日期与int不兼容
将日期用引号引起来:
string whereClause = string.Format(@"ExpireDate >= '{0}'", DateTime.Now.ToShortDateString());
var list = clsAdFactory.GetAllByCommand(whereClause);
尝试以下方法:
var list = clsAdFactory.GetAllByCommand("ExpireDate>='" + DateTime.Now.ToShortDateString()) + "'";
您最终的SQL是这样的:
WHERE ExpireDate>=20140101
什么时候应该更像这样:
WHERE ExpireDate>='20140101'
您甚至可能需要一些额外的单引号使它保持高兴:
var list = clsAdFactory.GetAllByCommand("ExpireDate>=''" + DateTime.Now.ToShortDateString()) + "''";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.