急问一个实战性非常强的SQL,高手进,在线等!!!!30分,只有这些了。
//   A表有字段 
 input_date:录入时间   格式:yyyy/mm/dd   hh:mm:ss      
 想求每条纪录离现在有几个小时, 
 但要注意: 
 一定要过滤 
 [录入时间]后到GETDATE()间的 
 每天下午16:30-第二天早上8:00,   
 举个例子: 
 input_date:2007/01/09   15:30:00   录入的数据 
 到   2007/01/10   10:50:00   
 应该是4小时。(每天下午16:30-第二天早上8:00过滤)   
 ============================ 
 如何修改下列语句: 
 SELECT   DATEDIFF(Hour,   input_date,   GETDATE())   AS   Hours   
 FROM   A     
------解决方案----------------------try   
 SELECT DATEDIFF(Hour, input_date, GETDATE())-datediff(day, input_date, getdate())*15  AS Hours   
 FROM A
------解决方案--------------------declare @dt1 datetime, @dt2 datetime 
 select @dt1= '2007/01/09 15:30:00 ', @dt2= '2007/01/10 10:50:00 ' 
 SELECT DATEDIFF(Hour, @dt1, @dt2)-datediff(day, @dt1, @dt2)*15  AS Hours   
 --result 
 Hours        
 -----------  
 4   
 (1 row(s) affected)   
------解决方案--------------------declare @input_date datetime, @dt2 datetime 
 select @input_date= '2007/01/09 5:30:00 ', @dt2=getdate() 
 if @input_date <convert(varchar(10),@input_date)+ ' 08:00:00 ' 
 select @input_date=convert(varchar(10),@input_date)+ ' 08:00:00 ' 
 if @dt2> convert(varchar(10),@dt2)+ ' 16:30:00 ' 
 select @dt2=convert(varchar(10),@dt2)+ ' 16:30:00 '   
 SELECT DATEDIFF(Hour, @input_date, @dt2)-datediff(day, @input_date, @dt2)*16  AS Hours 
------解决方案--------------------declare @input_date datetime, @dt2 datetime 
 select @input_date= '2007/01/11 14:30:00 ', @dt2=getdate() 
 if @input_date <convert(varchar(10),@input_date)+ ' 08:00:00 '  
 select @input_date=convert(varchar(10),@input_date)+ ' 08:00:00 ' 
 if @input_date> convert(varchar(10),@input_date)+ ' 16:30:00 ' 
 begin 
 select @input_date=convert(varchar(10),@input_date)+ ' 08:00:00 ' 
 select @input_date=dateadd(day,1,@input_date) 
 end 
 if @dt2> convert(varchar(10),@dt2)+ ' 16:30:00 ' 
 begin 
 select @dt2=convert(varchar(10),@dt2)+ ' 16:30:00 ' 
 select @dt2=dateadd(day,1,@dt2) 
 end 
 if @dt2 <convert(varchar(10),@dt2)+ ' 08:00:00 '  
 select @dt2=convert(varchar(10),@dt2)+ ' 08:00:00 '   
 SELECT DATEDIFF(Hour, @input_date, @dt2)-datediff(day, @input_date, @dt2)*16  AS Hours