簡體   English   中英

錯誤:日期類型上的“操作數類型沖突:日期與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM