Php 从数据库中获取日期并检查此日期是否已过

Php 从数据库中获取日期并检查此日期是否已过,php,Php,我有一个保存工作的数据库。它包含作业名称和过期日期。我的数据库是用户作业(id、用户id、作业名称、日期、月份、年份)。用于在数据库中插入作业过期日期的表单包括3个下拉列表。用户选择的日期(值1-31)、月份(值1-12)和年份(2014-2024)。我使用以下函数获取服务器的日期: <?php $server_date = date('Y-m-d'); $a = mysql_query("select * from `user_job` where `user_id`='$sess

我有一个保存工作的数据库。它包含作业名称和过期日期。我的数据库是用户作业(id、用户id、作业名称、日期、月份、年份)。用于在数据库中插入作业过期日期的表单包括3个下拉列表。用户选择的日期(值1-31)、月份(值1-12)和年份(2014-2024)。我使用以下函数获取服务器的日期:

<?php

$server_date = date('Y-m-d');


$a = mysql_query("select * from `user_job` where `user_id`='$session_user_id'  ");

while($run_job = mysql_fetch_array($a)){

  $the_job_day = $run_job['day'];
  $the_job_month = $run_job['month'];
  $the_job_year = $run_job['year'];
}   

?>


但我建议在数据库中以不同的方式存储时间。您可以使用多种不同的日期/时间类型

按照有效性的顺序,可以使用多种方法:

  • 将日期存储为数据库中的
    date
    列,然后使用select语句与
    NOW()进行比较。
  • 获取当前时间戳和作业的时间戳,然后比较它们
  • 使用PHP的
    DateTime
    类来使用
    DateTime::diff()
    方法(请参阅)

  • 你知道怎么做吗?使用
    time()
    获取当前服务器时间,然后获取插入数据库的时间减去它,然后它就完成了。这很好,但我遇到了一个问题。今天是2014-06-01,只有当日期大于2014-06-19时,上述代码才对我有效。知道为什么是在第19天及以上吗?对我来说很有效。请告诉我们今年的工作是什么$这个月的工作$如果工作日不起作用,我给出的日期是2014年6月2日,给我的号码是1401588000,而当前日期(今天是2014年6月1日)给出的号码是1401649815,大于这个数字给我的日期是2014年6月2日。
    $工作年是不可能的$这个月的工作$2014年6月2日的工作日
    。它将是一个至少包含两个
    -
    的字符串。但是如果$the_job\u month是
    june
    ,您应该真正更改存储日期的方式。但要修复它,请将其更改为:
    strotime($thejob\u day.$thejob\u month.$thejob\u year)
    
    $the_job_time = strtotime($the_job_year .'-'. $the_job_month .'-'. $the_job_day);
    $current_time = time();
    if ($current_time > $the_job_time) {
        // the job have expired
    }