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 です。

注: date between 句を追加する前に、このクエリは問題がなかったため、フィールドは確実に存在します。

編集:実際のクエリ文字列:

"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 句の前に機能していたと述べて間違いを犯しました-重要なコンマを省略したため、選択を改ざんしたに違いありません。

4

3 に答える 3

4

パスの前にカンマがありません。

于 2012-06-29T08:49:51.803 に答える
2

日付で CONVERT() を使用します。

BETWEEN CONVERT(datetime, 'here put date', 120)  AND CONVERT(datetime, 'here put date', 120)
于 2012-06-29T08:51:11.070 に答える
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;
于 2012-06-29T08:57:59.457 に答える