如何使用CURRENT_TIMESTAMP添加截止日期?

时间:2019-07-13 08:47:16

标签: php html mysql

我正在尝试建立图书馆预订系统,因此当用户借书时,他们将在发布日期后的7天(设置为CURRENT_TIMESTAMP)上设置截止日期。但是,有没有办法让我在php / html代码中仅使用CURRENT_TIMESTAMP + 7天?还是我需要添加另一个表列以在数据库中设置到期日变量?

我尝试更改数据库中的变量(精细),该变量在截止日期之前在我的数据库中是不需要的。但是,这弄乱了数据不会显示的全部内容。

因此,目前,我正尝试通过DATE_ADD函数将7天添加到IssueDate变量中。但是,这将不允许代码显示。

                                        <tr>
                                            <th>#</th>
                                            <th>Book Name</th>
                                            <th>ISBN </th>
                                            <th>Issued Date</th>
                                            <th>Due Date</th>
                                            <th>Action</th>
                                        </tr>
                                    </thead>
                                    <tbody>
<?php 
$sid=$_SESSION['stdid'];
$sql="SELECT tblbooks.BookName,tblbooks.ISBNNumber,tblissuedbookdetails.IssuesDate,tblissuedbookdetails.ReturnDate,tblissuedbookdetails.id as rid,tblissuedbookdetails.fine from  tblissuedbookdetails join tblstudents on tblstudents.StudentId=tblissuedbookdetails.StudentId join tblbooks on tblbooks.id=tblissuedbookdetails.BookId where tblstudents.StudentId=:sid order by tblissuedbookdetails.id desc";
$query = $dbh -> prepare($sql);
$query-> bindParam(':sid', $sid, PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
$cnt=1;
if($query->rowCount() > 0)
{
foreach($results as $result)
{               ?>                                      
                                        <tr class="odd gradeX">
                                            <td class="center"><?php echo htmlentities($cnt);?></td>
                                            <td class="center"><?php echo htmlentities($result->BookName);?></td>
                                            <td class="center"><?php echo htmlentities($result->ISBNNumber);?></td>
                                            <td class="center"><?php echo htmlentities($result->IssuesDate);?></td>
                                            <td class="center"><?php if($result->ReturnDate=="")
                                            {?>
                                            <span style="color:red">
                                             <?php   echo htmlentities("Not Return Yet"); ?>
                                                </span>
                                            <?php } else {

                                            echo htmlentities($result->SELECT DATE_ADD(d,7,IssuesDate));
                                        }
                                            ?></td>
                                              <td class="center">

                                            <a href="test-return.php?rid=<?php echo htmlentities($result->rid);?>">
                                            <button class="btn btn-primary"><i class="fa fa-edit "></i>Extend</button> 

                                            </td>

                                        </tr>
 <?php $cnt=$cnt+1;}} ?>                                      
                                    </tbody>

任何“工作代码”都不会在“到期日”表列中显示结果,而那些不正常的结果仅表示存在意外变量,符号等。

2 个答案:

答案 0 :(得分:0)

您需要使用PHP而不是SQL计算7天。在您的else块中使用以下代码来计算和显示到期日期。

$datetime = new DateTime( $result->IssuesDate );
$datetime->modify('+7 days');
echo $datetime->format('Y-m-d');

答案 1 :(得分:0)

  

CURRENT_TIMESTAMP + 7 days

标准SQL中的正确语法为:

CURRENT_TIMESTAMP + INTERVAL 7 DAY

(您的查询是有效的,但没有执行您认为的操作。)

您可能希望允许一整天,因此可以使用CURRENT_DATE而不是CURRENT_TIMESTAMP来缩短时间:

SELECT CURRENT_DATE AS today, CURRENT_DATE + INTERVAL 7 DAY AS due_date;
+------------+------------+
| today      | due_date   |
+------------+------------+
| 2019-07-13 | 2019-07-20 |
+------------+------------+