2009-11-04 56 views
3

如何在此處傳入日期時間值?ObjectQuery,在Where子句中過濾日期時間

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

下面應該工作:

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

有關在ESQL查詢文本的詳細信息,請參閱documentation

+0

仍然不工作,這給了我這個錯誤「的參數類型‘Edm.DateTime’和‘Edm.String’是該操作不兼容,近WHERE謂語,第6行,列。 15.」 – Juvil 2009-11-04 09:28:25

+0

@Juvil:我已經更新了代碼片段,以包含DATETIME限定符,它需要區分日期/時間文字和字符串文字。 – pmarflee 2009-11-04 09:52:31

+0

謝謝,我明白這是缺少的。 – Juvil 2009-11-04 11:03:30

5

不幸的是@ pmarflee的回答不起作用。我發現對應MSDN另一種解決方案:

的日期部分的格式必須爲:YYYY-MM-DD,其中YYYY是0001和9999之間的四個 數字的年份值,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); 
+0

@Anatolli你可以請幫我這個http://stackoverflow.com/questions/22247016/edm-datetime-coversion-javascript – 2014-03-07 10:21:51

相關問題