看不出这个简单的SQL查询是如何“格式错误”的!

时间:2012-06-29 08:44:49

标签: c# sql datetime

     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"

编辑:我之前说过它在之间的条款之前已经有效 - 我必须篡改选择因为我省略了一个重要的逗号。

3 个答案:

答案 0 :(得分:4)

你在路径之前缺少逗号。

答案 1 :(得分:2)

将CONVERT()与日期一起使用:

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

答案 2 :(得分:1)

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

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;