在SQL查询中使用LIKE和BETWEEN

时间:2013-11-29 10:03:40

标签: sql sql-server stored-procedures between sql-like

alter PROCEDURE [dbo].[select_User_attendance_master_Date]        
(        
@From_date NVarchar(100),  
@To_date NVarchar(100)            

)        
as        
 begin        
  select           

 Employee_Attendace_Code,        
 Convert(varchar(11),Employee_Attendance.Attendance_day,106) as Attendanceday  

    from Employee_Attendance        
(Convert(varchar(11),Employee_Attendance.Attendance_day,106) between '%'+@From_date+'%'    
 AND  '%'+@To_date+'%')     

end

这个查询不起作用它在Attendance_day值中没有任何结果,例如2013-11-28

2 个答案:

答案 0 :(得分:1)

请重新考虑您的问题。 LIKE非常适合在弦乐上操作,但是日期不好用。 根据您的数据,它可以返回日期大于日期。

尝试使用日期/日期时间变量,如果您将日期作为字符串接收,请将该日期转换为日期/日期时间数据类型,并将这些值放在中间。

如果可以,请将日期参数作为日期/日期时间类型接收。

答案 1 :(得分:0)

我相信你在找这个? 您错过了WHERE子句,我更正了您选择的第一列的拼写错误。

ALTER PROCEDURE [dbo].[select_User_attendance_master_Date]        
(        
@From_date NVarchar(100),  
@To_date NVarchar(100)            

)        
AS        
 BEGIN        
    SELECT           
        Employee_Attendance_Code,        
        Employee_Attendance.Attendance_day as Attendanceday  
    FROM Employee_Attendance        
    WHERE Employee_Attendance.Attendance_day BETWEEN @From_date AND @To_date     

END