2013-06-24 2 views
2

Это не работает:Как преобразовать DateTime SELECT в Entity Framework 5 только для выбора даты?

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

schedules.DateSched является тип "SQL DateTime".

Вышеуказанная функция возвращает дату и время.

Как мне назначить только часть DATE расписания.DateSched для моей переменной «airDate»?

Это то, что производит Entity Framework:

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

И если вы выбираете, что вы получите:

2013-06-24 00: 00: 00,0000000

Я хочу получить:

06/24/2013

+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 (строковый формат)', который все пытались вам объяснить. –

1

Вы пытались форматировать дату?

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

Метод ToSring имеет 0 параметров, но он вызывается с двумя аргументами. –

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

Я не могу использовать функцию ToString в LINQ to Entities. –

+0

Вы не используете это на _entity_ - вы используете его, когда вы _display_ данные. Поскольку вы не указали, как вы это делаете, я привел общий пример. –