2013-05-07 5 views
1

у меня есть этот GridView, и я использую SqlDataSourceОшибка: при преобразовании даты и/или времени из символьной строки при преобразовании даты выбрана ошибка?

это моя команда выбора,

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TAXIConnectionString %>" 
    SelectCommand="SELECT [TripId] FROM [BookingMaster] 
        WHERE(([PickupLocation] = @PickupLocation or @PickupLocation is null) 
        AND ([DestinationLocation] = @DestinationLocation 
        or @DestinationLocation is null) 
        AND ([Status] = @Status or @Status is null) 
        AND (cast([PickupDateTime] as date) = @PickupDateTime 
        or @PickupDateTime is null))" 
    CancelSelectOnNullParameter="False"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="ddPickup" Name="PickupLocation" 
        PropertyName="SelectedValue" Type="String" 
        ConvertEmptyStringToNull="true" /> 
      <asp:ControlParameter ControlID="ddDestination" Name="DestinationLocation" 
       PropertyName="SelectedValue" Type="String" 
       ConvertEmptyStringToNull="true" /> 
      <asp:ControlParameter ControlID="ddStatus" Name="Status" 
       PropertyName="SelectedValue" Type="String" 
       ConvertEmptyStringToNull="true" /> 
      <asp:ControlParameter ControlID="txtBookingDate" Name="PickupDateTime" 
       PropertyName="Text" Type="String" ConvertEmptyStringToNull="true" /> 
     </SelectParameters> 
    </asp:SqlDataSource>  

но пришла ошибка, как я выбрать дату после 13 или еще ...

Server Error in '/' Application. 

Conversion failed when converting date and/or time from character string. 

Что не так с этим?

ответ

2

Звучит как проблема локализации для меня. Я предполагаю, что вы вводите даты в формате dd/mm/yy, но ASP.NET или SQL Server пытаются проанализировать их с помощью инвариантной культуры или en-US, которая ожидает формат mm/dd/yy. Или наоборот. При передаче дат в SQL Server лучше всего их разобрать с помощью DateTime.Parse или передать их в виде строк, используя формат yyyy-MM-dd HH:mm:ss, который абсолютно однозначен.

+0

Кроме того, это ваш столбец базы данных '[PickupDateTime]' фактический столбец времени? Если нет, есть ли причина, почему нет? Если это так, вам не нужно указывать его на сегодняшний день. – Adrian

+0

Я использовал «[PickupDateTime]» как varchar, bcoz его хранилище дата времени для базы данных, но мне нужно сравнивать только дату, а не время, которое yi выбирает для сравнения даты .. – Saranya

+0

В этом случае вы должны использовать данные 'date' тип. Хранение дат как строк - плохая идея для качества и производительности данных. – mroach

Смежные вопросы

 Смежные вопросы