C# Can';我看不出这个简单的SQL查询是怎样的';格式错误';!

C# Can';我看不出这个简单的SQL查询是怎样的';格式错误';!,c#,sql,datetime,C#,Sql,Datetime,minimumDate和maximumDate的类型为DateTime(.net DateTime)。这是一个FullTextSQLQuery 注意:在添加date between子句之前-此查询很好,因此字段肯定存在,等等 编辑:实际查询字符串: QueryText = string.Format("SELECT {0}, {1} Path FROM Scope() " + "WHERE {0} = 'test' AND

minimumDate和maximumDate的类型为DateTime(.net DateTime)。这是一个FullTextSQLQuery

注意:在添加date between子句之前-此查询很好,因此字段肯定存在,等等

编辑:实际查询字符串:

     QueryText = string.Format("SELECT {0}, {1} Path FROM Scope() "
                                + "WHERE {0} = 'test' AND {1} BETWEEN '"
                                + minimumDate.ToString("yyyy-MM-dd HH:mm:ss") + "' AND '" + maximumDate.ToString("yyyy-MM-dd HH:mm:ss")
                                + "' ORDER BY {1} Desc", "TestField", "DateField");

编辑:我犯了一个错误,说它在BEVERY子句之前起作用-我一定是篡改了select,因为我省略了一个重要的逗号。

您缺少路径前的逗号。

使用CONVERT()和日期:

"SELECT TestField, DateField FROM Scope() WHERE TestField = 'test' AND DateField BETWEEN '2011-06-30 09:41:23' AND '2012-06-29 09:41:23' ORDER BY DateField  Desc"

您不应该在.net中编写这样的查询。您应该使用db参数:

BETWEEN CONVERT(datetime, 'here put date', 120)  AND CONVERT(datetime, 'here put date', 120)

回放后实际的
querytext
是什么请始终使用SqlParameter而不是字符串连接。你会避免很多头痛。SqlParameters将帮助您正确地将类型转换为实际的SQL查询,而不必处理自定义模式。您的代码将更具可读性。请参阅OP.@SteveB-FullTextSQLQuerys可能的参数?@DeeMac:我不知道。我从来没有试过:)我没有看到你问题的这一部分。请尝试告诉我们您的实验结果:)@DeeMac no,但这不是全文查询。。。但史蒂文是对的;参数会更合适,仅此而已。谢谢!!假设你的意思是逗号!?我不明白什么似乎是正确的答案,这让我很担心。是的,这就是我的意思,英语不是我的第一语言:),我会在答案文本中更改它。@Downvoter,为什么downvote?在sql语句中使用参数是您应该使用的方式。这是datetime格式,您也可以通过只传递日期并使用120;)转换为datetime
string commandText = string.Format("SELECT {0}, {1} FROM Scope() "
                            + "WHERE {0} = 'test' AND {1} BETWEEN '@minDate' "
                            + "AND '@maxDate'"
                            + " ORDER BY {1} Desc", "TestField", "DateField");

SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@minDate", SqlDbType.SqlDateTime);
command.Parameters["@minDate"].Value = minimumDate;
command.Parameters.Add("@maxDate", SqlDbType.SqlDateTime);
command.Parameters["@maxDate"].Value = maximumDate;