无法理解这个简单的SQL查询为什么会被判定为“格式错误”!

3
     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");

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

注意:在添加日期之间的子句之前,此查询是正常的,因此字段肯定存在等。

编辑:实际查询字符串:

"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"

编辑:我之前说过它在between子句之前运作正常,是我的错误 - 我可能篡改了选择操作,因为我漏掉了一个重要的逗号。


3
替换后,您的实际“QuerText”是什么? - juergen d
4
请始终使用SqlParameter而不是字符串拼接。这样将避免很多麻烦。SqlParameters将帮助您将类型正确转换为实际的SQL查询,而无需处理自定义模式。您的代码将更易读。 - Steve B
请参见原帖。@SteveB - FullTextSQLQuerys 可以使用参数吗? - user1017882
1
@DeeMac:我不知道。我从来没有尝试过 :) 我没有看到你问题的这一部分。请尝试并告诉我们你实验的结果 :) - Steve B
@DeeMac 不,但这不是一个完整的文本查询... 但SteveB是对的;使用参数会更可取。 - Marc Gravell
显示剩余2条评论
3个回答

4

在“路径”之前您缺少了逗号。


就是这样了。非常感谢!假设你实际上是指逗号? - user1017882
我不理解似乎是正确答案的事实让我感到担忧。 - Jodrell
是的,那就是我的意思,英语不是我的母语:),我会在答案文本中进行更改。 - Ivan Golović

2

使用CONVERT()处理日期:

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

1
这是日期时间格式http://msdn.microsoft.com/en-us/library/ms187928.aspx 您还可以通过仅传递日期并使用120进行转换;) - cichy

1

在 .net 中,你不应该像那样编写查询。你应该使用数据库参数:

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;

@Downvoter,为什么要点踩?在SQL语句中使用参数是正确的做法。 - Tomas Jansson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接