2013-06-24 49 views
2

這不是工作:如何將實體框架5中的DateTime SELECT轉換爲僅選擇日期部分?

select new Schedules 
{ 
    airDate = EntityFunctions.TruncateTime(schedules.DateSched), 
}; 

schedules.DateSched的類型是 「SQL日期時間」。

上述函數返回它的日期和時間部分。

我該如何去分配schedule.DATESET到我的「airDate」變量的DATE部分?

這是實體框架產生:

convert (datetime2, convert(varchar(255), <field>, 102) , 102) AS [C4] 

如果你選擇,你會得到:

2013年6月24日00:00:00.0000000

我想:

2013年6月24日

+0

你_sure_它返回的時間,還是你只是看到'00:00'或'12:00 AM'在顯示的地方? –

回答

0

遺憾的是沒有答案的幫助我,所以我所做的是,在實際GridView的,我所做的:

<asp:BoundField HeaderText="Air Date" DataField="AirDate" SortExpression="AirDate" DataFormatString="{0:d}"/> 
+2

不是沒有任何答案,沒有任何答案可以幫助你*正是因爲你忽略了高度相關的信息,你需要這種格式的網格視圖。 'DataFormatString'與每個人都試圖向你解釋的'DateTime.ToString(string format)'的字符串參數具有相同的效果。 –

1

您是否嘗試過格式化的日期?

airDate = EntityFunctions.TruncateTime(schedules.DateSched).ToString("d", 
         CultureInfo.CreateSpecificCulture("en-US"))), 
+0

方法ToSring具有0個參數,但用2個參數調用。 –

2

不管你出的SQL無關你的問題:C#只有一個DateTime類型。 C#中沒有Date(僅)鍵入要轉換爲。因此,2013-06-24 00:00:00.00000是最接近你有一個日期沒有時間。

1

DateTime類型總是有一個時間部分。所有EntityFunctions.TruncateTime確實剝離任何時間值,有效地將時間組件更改爲午夜。

如果你只想顯示日期組件,比使用適當的格式代碼只顯示日期:

string myDate = dateTime.ToString("MM/dd/yyyy"); 
+0

我不能在LINQ to Entities中使用ToString函數。 –

+0

您不會在_entity_上使用它 - 您在顯示數據時使用它。既然你沒有具體說明你是怎麼做的,我就給出了一個通用的例子。 –