在数据库中自动增加天数

问题描述 投票:0回答:2

我有一个应用程序,每个用户可以请求他们的假期。有两种类型的用户,fixedtemporary。固定用户每年有24天的假期。怀疑来自临时用户。

临时用户每月工作2天,直到当年12月31日。例如:

user1于19/01年20月20日进入公司,直至19/12/2019,必须每月工作2天,直到该日为止,总共22天。截至01/01/2020,这两天将在每个日历月增加并从0开始,因此01/01/2020将有0天,01/02/2020将有2天。

是否有PHP函数或MySQL这两天自动将它们添加到数据库的过程?

在数据库中,我有一个user表,其中包含以下字段:

name      available_days       start_date
=======   =================    ============
user1           0                25/01/2019

对于那些必须增加日子的available_days

我有这个函数来计算自用户进入公司以来的月份差异,直到今天:

function difcurrentmonth($startdate){
 $date = new DateTime($startdate);
 $currentdate= (new DateTime)->format('Y-m-d H:i');
 $finaldate = new DateTime($currentdate);

 $dif = $date->diff($finaldate );

 $month = ( $dif->y * 12 ) + $dif->m;
 return $month;
}

$month = difcurrentmonth("2019-01-25");
$available_days= $month * 2; 
php mysql
2个回答
0
投票

不是一个答案;评论太久了......

- 今天是2019年2月21日。

- 临时员工于2018年8月15日开始工作。

- 应计假期于12月31日重置。

SELECT GREATEST('2018-08-15','2019-01-01') range_start
     , '2019-02-21' range_end
     , DATEDIFF('2019-02-21',GREATEST('2018-08-15','2019-01-01')) duration
     , ROUND(DATEDIFF('2019-02-21',GREATEST('2018-08-15','2019-01-01'))/30,0) accrued;
+-------------+------------+----------+---------+
| range_start | range_end  | duration | accrued |
+-------------+------------+----------+---------+
| 2019-01-01  | 2019-02-21 |       51 |       2 |
+-------------+------------+----------+---------+

在您的方案中,'2018-08-15'将替换为数据库中的列。


-2
投票

首先,您需要编写一个查询,从Qazxswpoi表中获取available_daysUser

我假设你在这个例子中使用user1

PDO

创建一个在每月的某一天运行的$stmt = $pdo_conn->prepare("UPDATE user SET available_days = available_days + 2 where [name] = :userName"); $stmt->bindParam(':userName', "user1"); $stmt->execute(); 作业。您可能希望添加cron列以用作安全捕获,以防止在给定月份内多次更新用户。

© www.soinside.com 2019 - 2024. All rights reserved.