2
select 
  e.E_ID as Employee_ID,
  e.E_NAME as Employee_Name, 
  convert(varchar(10),a.Date,103) as Date ,
  convert(varchar(8),a.Timein,108) as Time_In, 
  convert(varchar(8),a.Timeout,108) as Time_Out 
from Employee e 
LEFT JOIN Attendance a  
  ON a.E_ID = e.E_ID 
  AND (convert(varchar(10),a.Date,103) between '01/02/2013' And '28/02/2013')

以上是我的查询,我从两个表中获取数据,但它也在打印一月的值,这不在查询中。

我已经调试了一个小时,请任何人帮助。

4

2 回答 2

2

BETWEEN并且dd/mm/yyyy格式化的字符串不起作用!

要在二月份恢复行,请使用

   LEFT JOIN Attendance a
     ON a.E_ID = e.E_ID  AND a.Date BETWEEN '20130201' AND '20130228'

或者,如果其中的值a.Date可能具有除00:00:00

   LEFT JOIN Attendance a
     ON a.E_ID = e.E_ID  AND a.Date >= '20130201' AND a.Date < '20130301'

将列强制转换varchar为不可分割的并且意味着不能使用索引查找,

于 2013-03-11T08:37:53.920 回答
1
Try below and see if it helps

select 
  e.E_ID as Employee_ID,
  e.E_NAME as Employee_Name, 
  convert(varchar(10),a.Date,103) as Date ,
  convert(varchar(8),a.Timein,108) as Time_In, 
  convert(varchar(8),a.Timeout,108) as Time_Out 
  from Employee e 
  LEFT JOIN Attendance a  
  ON a.E_ID = e.E_ID 
  Where (convert(varchar(10),a.Date,103) between '01/02/2013' And '28/02/2013')
于 2013-03-11T08:38:37.023 回答