这是表结构。
tbl_员工
firstname varchar(50)
midname varchar(50)
lastname varchar(50)
...
tbl_staff2
first_day_of_service date
...
这是场景。 员工在组织工作的头 10 年,将获得忠诚奖,并在他/她获得头 10 年后每 5 年一次。
我的初始代码只会获取员工姓名和第一天服务的日期。
public function actionGet_loyalty() {
$query = (new \yii\db\Query())
->select(['firstname', 'midname', 'lastname', 'first_day_service'])
->from('tbl_staff')
->limit(100)
->offset(0)
->orderBy('first_day_service')
->leftJoin('tbl_staff2', 'tbl_staff2.staff_id = tbl_staff.id');
$command = $query->createCommand();
$data = $command->queryAll();
$string = "<table class='table table-striped'><tr><th>No.</th><th>Name</th><th>Date to Receive Loyalty Award</th></tr>";
$i = 1;
foreach ($data as $row) {
$firstname = $row['firstname'];
$midname = $row['midname'];
$lastname = $row['lastname'];
//$string.=$row['first_day_service'];
$string.="<tr>"
. "<td>$i</td>"
. "<td>" . $firstname . " " . $midname[0] . ". " . $lastname . "</td>"
. "<td>" . $row['first_day_service'] . "</td>"
. "</tr>";
$i++;
}
$string.="</table>";
return $string;
}
如何以递增的顺序显示所有员工的姓名和他/她获得奖励的日期。
或者任何将根据日期对名称进行排序的 mysql 查询?
最佳答案
如果你想通过 SQL 查询来完成,在 MySQL 中你可以使用 DATE_ADD 添加日期功能:
DATE_ADD(date, INTERVAL 5 YEAR)
或者通过 PHP 使用 DateTime
modify方法:
$dateTime = new DateTime($date);
$dateTime->modify('+ 5 years')->format('Y-m-d H:i:s');
关于mysql - YII2获取10年5年后的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35837528/