Eval обрезает временной сегмент поля SQL DateTime - PullRequest
0 голосов
/ 22 апреля 2009

собирался назвать это "Эвал не даст мне время суток", но подумал, что это слишком мило.

У меня какая-то проблема, противоположная предложенным вопросам, которые я вижу для своего названия, так что вот так:

Visual Studio 2008 Pro, SQL Express 2008, Vista. Веб-проект, где я открываю записи из таблицы событий с информацией о присоединении из таблицы объектов.

У меня есть поле SQL DateTime в файле SQL, которое полностью заполнено: например, 30.04.2009 18:30.

Мое поле в ListView является прямым <%# Eval("EventDate") %>, и мой след, насколько я могу судить по просмотру окна Autos через поиск из SQLDataSource, сохранился без изменений с временем 18:30 дня.

Насколько мне известно, единственной инструкцией, которая приходит после заполнения источника данных, является сам Eval.

Тем не менее, во время визуализации, эта дата и время появляются на странице как 4/30/2009 12: 00: 00 AM .

Поэтому я твердо убежден в том, что мне нужно дополнительное фу, чтобы разобрать мое утверждение Эвала, чтобы получить то же самое время, что и я. Я еще не очень разбираюсь в этом, поэтому предложения будут приветствоваться. Заранее спасибо.

Редактировать: предоставление кода для Хосе.

DataSource:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MeetingsConnectionString %>" onselecting="SqlDataSource1_Selecting" SelectCommand="SELECT Events.ID, Events.FacilityID, Events.Room, Events.EventDate, Events.Speaker, Events.Topic, Facilities.ID AS Expr1, Facilities.FacilityName, Facilities.FacilityAddress, Facilities.FacilityCity, Facilities.FacilityState, Facilities.FacilityZip, Facilities.FacilityLat, Facilities.FacilityLong FROM Events INNER JOIN Facilities ON Events.FacilityID = Facilities.ID WHERE (Events.EventDate BETWEEN @EventDate AND @EventDate2) ORDER BY Events.EventDate" ProviderName="System.Data.SqlClient"> <SelectParameters> <asp:Parameter Name="EventDate" /> <asp:Parameter Name="EventDate2" /> </SelectParameters> </asp:SqlDataSource>

ListView:

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="ID,Expr1"> <AlternatingItemTemplate> When:<asp:Label ID="EventDateLabel" runat="server" Text='<%# Eval("EventDate") %>' />

... <ItemTemplate> When: <asp:Label ID="EventDateLabel" runat="server" Text='<%# Eval("EventDate") %>' /><br />

Редактировать 2: Я обошел проблему, разделив EventDate на EventDate (Дата) и EventTime (Время). Теперь я получил правильные значения и перешел к преобразованию значения времени из военного в гражданское время (т. Е. 18:30) в запросе SQL с использованием CONVERT или CAST. Спасибо за все ваши ответы.

1 Ответ

1 голос
/ 22 апреля 2009

Sql-сервер получил новый тип date, который будет это делать, если вы приведете datetime к date следующим образом: выберите конвертировать (дата и время, конвертировать (дата, «30.04.2009, 18:30»)

Мабы, ты где-то указал неверный тип?

...