2016-11-19 56 views
0

个人休假是10天。我需要的剩余休假从总事假扣除即10天从mysql中给定日期减去天数

result i have

SELECT id, firstname,lastname,join_date, completion_date,title, leave_from,leave_to, Given_leave_Days,Taken_Leave_Days,Remaining_Leave_Days FROM (SELECT T1.id,T1.firstname,T1.lastname,T1.join_date,T1.completion_date,T0.title,T2.leave_from,T2.leave_to,T2.user_id,T0.Leave_Days as Given_leave_Days,SUM(DATEDIFF(T2.leave_to,T2.leave_from)+1) AS Taken_Leave_Days ,T0.Leave_Days - SUM(DATEDIFF(T2.leave_to,T2.leave_from)+1) as 'Remaining_Leave_Days' FROM users_leave_request T2 INNER JOIN users T1 ON T2.user_id = T1.id INNER JOIN leave_type T0 ON T2.leave_type_id = T0.id GROUP BY T1.id, T1.firstname, T1.lastname, T1.join_date,T1.completion_date,T0.title,T2.leave_from,T2.leave_to,Given_leave_Days order by firstname) A 

我不得不结果显示在前端。

result in frontend

+1

如果你想修改数据库字段,你这样做都是错误的。修改是使用'UPDATE'完成的,而不是'SELECT'。尝试在网上寻找,告诉我们一些努力(至少)试图解决它,然后如果它仍然无法工作,或者你有任何问题,回到这里,你会得到帮助 –

回答

0

一般的答案是

select date_sub(now(), interval 10 day) 

可以更换now()从表中任何日期,可以更改为daymonthyear

结果从我示例是今天10天前的日期。例如,如果你只想过滤10天以前的日期,你可以这样做:

select * from mytable t where t.mydate < date_sub(now(), interval 10 day) 
+0

我写了一个普通的答案这将帮助你和谷歌搜索人员寻找一般答案。如果你想让我把你的sql语句修改为你的特定场景,请用换行符对它进行一些格式化,这样我就能理解它。 –