Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么C日期与SQL日期时间的比较不返回结果?_C#_Sql_Datetime - Fatal编程技术网

C# 为什么C日期与SQL日期时间的比较不返回结果?

C# 为什么C日期与SQL日期时间的比较不返回结果?,c#,sql,datetime,C#,Sql,Datetime,我知道SQL中的记录存在于这个日期范围之间,但我尝试了各种格式,甚至将范围扩大了很多,这仍然不会返回结果。我在此查询中错误地执行了什么操作,导致没有返回任何记录?谢谢你的帮助 DateTime today = DateTime.Now; DateTime tomorrow = today.AddDays(1); DateTime yesterday = today.AddDays(-1); DateTime dt = DateTime.Now; string yesterdayString =

我知道SQL中的记录存在于这个日期范围之间,但我尝试了各种格式,甚至将范围扩大了很多,这仍然不会返回结果。我在此查询中错误地执行了什么操作,导致没有返回任何记录?谢谢你的帮助

DateTime today = DateTime.Now;
DateTime tomorrow = today.AddDays(1);
DateTime yesterday = today.AddDays(-1);

DateTime dt = DateTime.Now;
string yesterdayString = yesterday.ToString("yyyy-MM-dd HH:mm:ss");
string tomorrowString = tomorrow.ToString("yyyy-MM-dd HH:mm:ss");

int itemNum = 0;
string query = "select DocID, CNo, DocType, DocNumber from errordata where cno = '" + cno + "' and createddate > '" + yesterdayString + "' and createddate < '" + tomorrowString + "' order by '" + sorton + "'desc";

如果使用参数化查询,则不会出现此问题。 见:

您的查询应如下所示:

@"SELECT VALUE Contact FROM AdventureWorksEntities.Contacts 
            AS Contact WHERE Contact.LastName = @ln" ;
请注意参数的@占位符 然后你可以这样做:

// 2. define parameters used in command object
SqlParameter param  = new SqlParameter();
param.ParameterName = "@City";
param.Value         = inputCity;

// 3. add new parameter to command object
cmd.Parameters.Add(param);

// get data stream
reader = cmd.ExecuteReader();
但是参数值可以是正常的DateTime值,比如DateTime.Today。 这应该让你开始


还要检查可能出现的异常。无效的sql将引发异常。捕获它们并根据需要更正sql。

如果使用参数化查询,则不会出现此问题。 见:

您的查询应如下所示:

@"SELECT VALUE Contact FROM AdventureWorksEntities.Contacts 
            AS Contact WHERE Contact.LastName = @ln" ;
请注意参数的@占位符 然后你可以这样做:

// 2. define parameters used in command object
SqlParameter param  = new SqlParameter();
param.ParameterName = "@City";
param.Value         = inputCity;

// 3. add new parameter to command object
cmd.Parameters.Add(param);

// get data stream
reader = cmd.ExecuteReader();
但是参数值可以是正常的DateTime值,比如DateTime.Today。 这应该让你开始


还要检查可能出现的异常。无效的sql将引发异常。捕获它们并在需要时更正sql。

您可以尝试以下方法:

string query = "SELECT DocID, CNo, DocType, DocNumber "+
               "FROM tableName "+
               "WHERE cno = @cno AND "+
               "CreatedDate BETWEEN @yesterday AND @tomorrow";

var sqlCommand = new SqlCommand(query, connectionString);

sql.Parameters.Add("@cno", cno);
sql.Parameters.Add("@yesterday", yesterday);
sql.Parameters.Add("@tomorrow", tomorrow);

我认为你的问题在于缺少了。此外,我使用参数编写了查询,这可以防止sql注入

您可以尝试以下方法:

string query = "SELECT DocID, CNo, DocType, DocNumber "+
               "FROM tableName "+
               "WHERE cno = @cno AND "+
               "CreatedDate BETWEEN @yesterday AND @tomorrow";

var sqlCommand = new SqlCommand(query, connectionString);

sql.Parameters.Add("@cno", cno);
sql.Parameters.Add("@yesterday", yesterday);
sql.Parameters.Add("@tomorrow", tomorrow);


我认为你的问题在于缺少了。此外,我使用参数编写了查询,这可以防止sql注入

您正在创建的查询缺少FROM子句。我希望您得到一个异常。

您正在创建的查询缺少FROM子句。我希望您得到一个异常。

-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入,因为您应该在查询映射中使用参数。您没有得到结果,因为您也在CNO上进行过滤,并且该语句不是真的。您没有得到异常吗因为无效的sql?很抱歉,我删除了一些代码,包括正在选择的几行。我无意中删除了from部分,但是查询本身仍然包含from。我已经尝试添加参数,但仍然没有返回任何记录。我在SQL中测试了相同的查询,它是有效的,这只是我假设的C日期的问题您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入,因为您应该在QueryApps中使用参数。您没有得到结果,因为您也在CNO上进行筛选,而该语句不是真的?您不是因为无效的SQL而得到异常吗?很抱歉,我已经删除了某些代码包含正在选择的几行。我无意中删除了from部分,但是查询本身仍然包含from。我已经尝试添加参数,但仍然没有返回任何记录。我在SQL中测试了同一个查询,它是有效的,这只是我假设的C日期的问题。回答实际问题的唯一答案不是关于参数的部分不重要不太可能。如果日期格式不正确,则不会得到结果,如果from子句缺失,则预期结果为异常。不过,很明显,from子句丢失了。是的,除了from子句之外,这是有效的T-SQL。我不知道海报做了多少工作才把他的问题归结为易于理解的问题。好吧,使用参数是一种最佳实践等等,它不会使他的查询无效。它会确保你不会得到关于日期的结果,究竟有谁知道如何将日期格式化为sql server能够理解的字符串呢?回答实际问题的唯一答案并不是关于参数的部分不重要。如果日期格式不正确,则不会得到结果,如果from子句缺失,则预期结果为异常。不过,很明显,from子句丢失了。是的,除了from子句之外,这是有效的T-SQL。我不知道海报做了多少工作才把他的问题归结为易于理解的问题。好吧,使用参数是一种最佳实践,等等,它不会使他的查询无效。它确实确保了你不会得到这个日期的结果,谁知道如何将日期格式化为sql server理解的字符串呢。