应该是下面两句出现异常了!
DateTime departureDate=Convert.ToDateTime(Request.Form["txtDepartureDate"]);
DateTime arrivalDate=Convert.ToDateTime(Request.Form["txtArrivalDate"]);Request.Form["txtDepartureDate"]和Request.Form["txtArrivalDate"]取到的字符串可能和你希望的格式并不相同!我碰到一次,一用户自己定义了时间日期格式,从而使DateTime.ToString()得到的字串怎么都写不到数据库的日期字段中!建议自已指定日期变量转成字符串时,自己指字格式如:"yyyy-MM-dd"之类的!另:从“1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM ”看,你的机器日期格式是美式?   还有为什么用Request.Form["txtDepartureDate"] 而不是直接引用控件的值?你不是使用服务器控件吗?

解决方案 »

  1.   

    修改存储过程如下试试,即转成相同的字符格式:
    --------------------------
     CREATE PROCEDURE SearchFlight
    (
      @sStartingFrom  varchar(50),
      @sDestination  varchar(50),
      @dArrivalDate datetime,
       @dDepartureDate datetime,
       @iTravelClassID int
    )
     AS
     begin 
      set nocount on
     
      select F.* from flights F
      inner join travel_class_seat_capacity TCSC
      on TCSC.flight_ID=F.flight_ID
      inner join travel_class TC
      on TC.travel_class_ID=TCSC.travel_class_ID
      where F.starting_from=@sStartingFrom  
      and F.destination=@sDestination
      and convert(varchar(30),F.arrival_date,103)=convert(varchar(30),@dArrivalDate,103)
      and convert(varchar(30),F.departure_date,103)=convert(varvhar(30),@dDepartureDate,103)
      and TC.travel_class_ID=@iTravelClassID
      and  TCSC.number_of_seats>0
    end
    GO
      

  2.   

    应该是日期类型的问题,我曾遇到过,把改为String departureDate=Convert.ToDateTime(Request.Form["txtDepartureDate"]).ToShortDateString;试试,SQL可以自动转换自符串为日期
      

  3.   

    不好意思,应为String departureDate=Convert.ToDateTime(Request.Form["txtDepartureDate"]).ToShortDateString();少了个括号