【问题标题】:select stored mysql date and current date and compare it in months选择存储的mysql日期和当前日期并以月为单位进行比较
【发布时间】:2016-06-24 20:50:06
【问题描述】:

实际上,我正在创建候选人无法在 3 个月内再次申请的招聘门户。 3个月后,他/她可以申请。所以我需要知道如何做到这一点。当候选人填写表格时,表格日期使用当前时间戳存储在 mysql 数据库中。现在我需要比较当前时间和数据库时间,如果两个日期之间的差异大于 3 个月,那么只能将值添加到数据库中。
简而言之,候选人不能在 3 个月内再次填写表格。如果 3 个月完成,那么候选人可以填写表格。

【问题讨论】:

标签: php mysql codeigniter-3


【解决方案1】:

假设,在您的数据库中:

table name : candidates
fields : email, form_date, .... ( other fields )
where 'email' is the primary key and 'form_date' has the timestamp in which a candidate had filled the form last time successfully.

然后在您的模型中:(看到您的标签,我猜您正在使用 Codeigniter 3)

    $query = "SELECT email FROM candidates WHERE form_date < NOW() - INTERVAL 3 MONTH";

    $queryResult = $this->db->query($query);

    foreach( $queryResult->result() as $row )
        $candidates_email = $row;

现在,您在 $candidates_email 中有了主键,您可以使用新信息更新候选行或做任何您喜欢的事情:)

【讨论】:

  • 抱歉,我的主键是候选人 ID,但我仍然不知道如何防止同一候选人填写表格,因为他的 3 个月还没有完成。
  • 您可以使用经过验证的唯一实体(电子邮件或电话号码等)来代表每个唯一的候选人。然后使用上述查询进行搜索。
【解决方案2】:

如果您愿意,可以在 MySQL 中进行一些“日期数学”。你没有告诉我们你的表是什么样子,但这里有一个例子: SELECT ...., DATE_SUB(your_date_var, INTERVAL 3 MONTH) as SomeColName from YourTable WHERE.... 所以你可以玩这个 - 而且有一个DATE_ADD 如果您想阅读他们的最后申请日并添加 3 个月并与 NOW() 进行比较。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2015-11-20
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2015-11-20
    相关资源
    最近更新 更多