修改存储过程强制使其的时间格式一致:
---------------------
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--------------------
哈哈~~~过年了.多蹭点分回家罗~~~
灌水~~~

解决方案 »

  1.   

    通过错误信息,应该是你的输入时间的字符串和系统默认的串格式不一样。输入是yyyy-MM-dd,默认的是MM/dd/yy,根据以往的经验,最好不要直接使用DateTime类型,而改用varchar类型和日期转换函数。你将程序和存储过程改称字符串加日期转换函数肯定可以。Oracle中用to_date("...", "yyyy-MM-dd")和to_char(..., "yyyy-MM-dd"),SQLServer中肯定也有类似的,查一下就可以,我没用过SQL Server. 祝好运,快快完成。^-^