请写一个SQL语句要求根据司龄(入司时间),按法定规则享受年假,年假天数规则 员工工作已满1年不满5年的,年休假5天; 员工工作已满5年不满10年的,年休假7天; 员工工作已满10年不满20年的,年休假10天; 已满20年的,年休假15天
时间: 2024-04-30 22:20:56 浏览: 14
假设员工信息存储在表employee中,其中字段包括employee_id(员工编号)、hire_date(入职日期),则可以使用以下SQL语句实现:
```
SELECT
employee_id,
hire_date,
CASE
WHEN DATEDIFF(CURDATE(), hire_date) >= 365 AND DATEDIFF(CURDATE(), hire_date) < 1825 THEN 5
WHEN DATEDIFF(CURDATE(), hire_date) >= 1825 AND DATEDIFF(CURDATE(), hire_date) < 3650 THEN 7
WHEN DATEDIFF(CURDATE(), hire_date) >= 3650 AND DATEDIFF(CURDATE(), hire_date) < 7300 THEN 10
WHEN DATEDIFF(CURDATE(), hire_date) >= 7300 THEN 15
END AS annual_leave_days
FROM employee;
```
该语句使用了CASE语句来根据员工的入职日期计算应享受的年假天数。其中,DATEDIFF()函数用于计算当前日期与入职日期之间的天数差,从而确定员工的工作年限。最终结果将包括员工编号、入职日期和年假天数。
相关问题
写一个sql语句要求查询student表中的所有数据以及显示结束时间减去开始时间的值
假设student表中有以下字段:id, name, start_time, end_time
则查询语句可以如下所示:
```
SELECT *, TIMEDIFF(end_time, start_time) AS duration FROM student;
```
其中TIMEDIFF函数用于计算两个时间之间的差值,返回的结果格式为时分秒。AS关键字用于给计算出的差值起一个别名为duration。
创建存储过程,要求一个员工工作年份大于6年将其转到经理办公室工作的sql语句
好的,以下是一个示例存储过程的 SQL 代码,满足您的要求:
```
CREATE PROCEDURE MoveEmployeeToManagerOffice
AS
BEGIN
UPDATE Employees
SET Office = 'Manager Office'
WHERE DATEDIFF(YEAR, HireDate, GETDATE()) > 6;
END
```
这个存储过程会查找在当前日期的基础上,入职时间超过6年的员工,并将他们的办公室位置更新为 "Manager Office"。您可以根据需要修改此代码并执行相应的 SQL 语句。