3

ここで日時の値を渡す方法は?

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= 11/4/2009 5:06:08 PM)");

上記のサンプルコードは機能しているようです。

これでも

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= \"11/4/2009 5:06:08 PM\")");

EDMで型キャストエラーが発生しました。

4

2 に答える 2

5

以下が機能するはずです。

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= DATETIME'11/4/2009 17:06:08')");

ESQLクエリのリテラルの詳細については、ドキュメントを参照してください。

于 2009-11-04T09:22:38.897 に答える
5

残念ながら、@pmarfleeの答えはうまくいきません。MSDNに対応する別のソリューションを見つけました:

日付部分は YYYY-MM-DD の形式である必要があります。ここで、YYYY は 0001 から 9999 までの 4 桁の年の値、MM は 1 から 12 までの月、DD は指定された月 MM に有効な日の値です。

時間の部分は、HH:MM[:SS[.fffffff]] の形式にする必要があります。ここで、HH は 0 から 23 までの時間の値、MM は 0 から 59 までの分の値、SS は 0 から 59 までの秒の値です。 fffffff は、0 ~ 9999999 の小数秒の値です。すべての値の範囲が含まれます。小数秒はオプションです。小数秒が指定されない限り、秒はオプションです。この場合、秒が必要です。秒または小数秒が指定されていない場合、代わりにデフォルト値のゼロが使用されます。

DATETIME シンボルとリテラル ペイロードの間に任意の数のスペースを含めることができますが、改行はできません。

DATETIME'2006-10-1 23:11'
DATETIME'2006-12-25 01:01:00.0000000' -- DATETIME'2006-12-25 01:01' と同じ

そしてコード自体:

DateTime dateTimeValue = DateTime.Now;
// ESQL DATETIME format MUST be <yyyy-MM-dd HH:mm> format                                 
_Query = _Query.Where(string.Format("(it.StartDate >= DATETIME'{0:yyyy-MM-dd HH:mm}')",dateTimeValue);
于 2012-02-13T16:40:44.517 に答える