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"
编辑:我之前说过它在之间的条款之前已经有效 - 我必须篡改选择因为我省略了一个重要的逗号。
答案 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;