【问题标题】:YII2 get the date after 10 years and 5 yearsYII2 获取 10 年和 5 年后的日期
【发布时间】:2016-06-20 15:16:41
【问题描述】:

这是表结构。

tbl_staff

firstname varchar(50)
midname varchar(50)
lastname varchar(50)
...

tbl_staff2

first_day_of_service date
...

这里是场景。 员工在组织工作的前 10 年将获得忠诚奖,之后每 5 年获得前 10 年奖励。

我的初始代码只会获取员工姓名和服务第一天的日期。

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 查询?

【问题讨论】:

    标签: mysql yii2-advanced-app


    【解决方案1】:

    如果你想通过 SQL 查询来完成,在 MySQL 中你可以使用 DATE_ADD 函数添加日期:

    DATE_ADD(date, INTERVAL 5 YEAR)
    

    检查this similar question

    或者通过 PHP 使用 DateTime modify 方法:

    $dateTime = new DateTime($date);
    $dateTime->modify('+ 5 years')->format('Y-m-d H:i:s');
    

    【讨论】:

    • 但问题是第一次应该是 10 年,然后每 5 年一次。只创建一个返回下一个奖励日期的 mysql 函数然后在查询中调用该函数并在该函数上设置 order by 是否很好?
    • @quickbrownfox 可以通过 MySQL 和 PHP 计算。这取决于您,取决于具体情况。
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2018-01-20
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多