[mysql]SQL 查询的搜索日期

标签: sql MySQL PHP C#
发布时间: 2017/4/9 21:38:13
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我写了那些缺席的人搜索员工考勤表的 SQL 查询。但我如何能显示日期,我的意思是缺席期间的日期吗?它除了日期工作正常。我想要显示那缺席期间的天是什么?我不能显示的日期。

示例︰

BadgeNumber - EmployeeName - Absent Date
10042 - Mr. Erik - 2014-07-01

代码︰

SELECT  SMEmployee.BadgeNumber,SMEmployee.EmployeeFullName,SMDepartment.DepartmentName
    FROM SMEmployee
    LEFT OUTER JOIN SMDepartment 
    ON SMDepartment.DepartmentID=SMEmployee.DepartmentID    
    WHERE EmployeeID NOT IN (
    SELECT empCheckInOut.USERID 
    FROM empCheckInOut 
    WHERE convert(date,CHECKTIME)='2014-07-01')

解决方法 1:

通常以检查存在记录缺乏 (如你正在这里为考勤,检查员工没有不退房登记日) 是更有效地使用左外部联接并检查为 NULL (即,左联接在哪里找到没有行) 在 where 子句中的字段之一。

不过这也不会给你的日期。

我想您要检查的日期,并需要渡过他们缺席的日期的选择。

作为这种也许使用一系列集简单查询的日期,CROSS JOIN 明白到雇员表并左将它加入到 empCheckInOut 表。这种方式,你可以拿出日期。

SELECT  SMEmployee.BadgeNumber,SMEmployee.EmployeeFullName,SMDepartment.DepartmentName, subDate.aDate
FROM SMEmployee
CROSS JOIN (SELECT '2014-07-01' AS aDate UNION SELECT '2014-06-30') subDate
LEFT OUTER JOIN SMDepartment 
ON SMDepartment.DepartmentID=SMEmployee.DepartmentID    
LEFT OUTER JOIN empCheckInOut
ON SMEmployee.EmployeeID = empCheckInOut.USERID 
AND convert(date,CHECKTIME) = subDate.aDate
WHERE empCheckInOut.USERID IS NULL
官方微信
官方QQ群
31647020