Я хочу отфильтровать gridview
путем сравнения столбца datetime типа datetime
в sql-сервере с текстовым полем даты.дата фильтрации в дате в другом формате
Столбец datetime в sql-сервере хранится/отображается (по умолчанию) в формате yyyy-mm-dd hh: mm: ss.sss.
Однако текстовое поле даты находится в формате dd/mm/yyyy.
<asp:TextBox ID="date_tb" runat="server" TextMode="Date"></asp:TextBox>
Я попытался с помощью FilterExpression="CONVERT(VARCHAR, [ScheduledDateTime], 105) LIKE '%{0}%'">
, но это не сработало.
FilterExpression="CONVERT([ScheduledDateTime], 'System.String', 105) LIKE '%{0}%'">
также не сработало.
Затем я попытался с помощью
SelectCommand="SELECT [ScheduledDateTime], CONVERT(VARCHAR, [ScheduledDateTime], 105) as d ... FROM table1
FilterExpression="d LIKE '%{0}%'">
, но он не работает, как хорошо.
редактировать:
Я изменил ControlParameter
в <asp:ControlParameter Name="ScheduledDateTime" ControlID="date_tb" PropertyName="Text" type="DateTime"/>
, так что я больше не придется беспокоиться о формате даты.
И все же есть проблема при сравнении date
с datetime
.
DateTimes хранятся в двоичном виде - они не сохраняются в любом "формате" –
Просто попробуйте это: 'FilterExpression =" Cas t ([ScheduledDateTime] как Date) = '{0}' "'. Но причина в том, что это не так здорово, потому что (я считаю) вам понадобится, чтобы ваш SQL Server работал по британским правилам. Вот почему CAST лучше в том смысле, что он будет работать в любом населенном пункте –
@ T.S. Выражение содержит неопределенный вызов функции cast(). –