在php中将日期与下个月的日期进行比较

时间:2017-11-06 06:58:23

标签: php

我有一个查询,用户填写每个月每天的记录,我希望,用户可以编辑/删除他的数据,直到下个月7日。

我使用import { FormControl, FormGroup, Validators } from '@angular/forms'; 函数获得了日期之间的差异,但无法理解如何比较该记录填充日期少于下个月的第7个。

date()

3 个答案:

答案 0 :(得分:0)

在那里,我共享一个查询,可以将数据提取到7日。如果发现任何问题,请查看此查询可以帮助您。

  

此表包含每月7日之前的最后数据   没有数据。

SELECT * from datatable where day(curdate()) <= 7 and cast(datefield as date) >= (curdate() + interval -1 month);

答案 1 :(得分:0)

这是一个示例代码

$curdate = date('Y-m-d', strtotime($fill_date)); // or time() for current date
$month = date('m', strtotime($curdate));
$year = date('Y', strtotime($curdate));

$nextmonth = ($month == 12)? 1: $month+1;
$date2 = date("Y-m-d", mktime(0, 0, 0, $nextmonth, 7, $year));

您可以将日期与strtotime进行比较

答案 2 :(得分:0)

你要求做的事情非常令人困惑,但我理解,因为我很酷。

这样做的最佳方法是在数据中设置一个标志,在数据库中有一个名为locked的字段,或者是一个简单的boolen值1 = true,0 = false

然后在午夜的7月份运行一个cron作业,用0更新当前月份之前的所有记录,并将它们设置为1。

编写一个cron工作来完成20行代码可能会非常简单。

简要示例(psudo代码)

    $date = (new DateTime())->modify('first day of this month')->format('Y-m-d');
    $Sql = "UPDATE tbl SET locked = 1 WHERE DATE(date_field) < '{$date}' AND locked=0";
    $DB->query($Sql);

Cron:如果你不知道它是什么

https://en.wikipedia.org/wiki/Cron

  

使用cron来安排作业(命令或shell脚本,包括PHP)   在固定的时间,日期或间隔定期运行。

如果他们只能编辑告诉下个月的第7个月,那么在每个月的7号,上个月的所有数据都不再可编辑。

然后当你将它们拉到编辑时,你就可以了

    SELECT * FROM table WHERE locked = 0

如果你真的想要在7日而不是一个月停止它。正如我在评论中所说的那样,如果我在第一天给出了一个记录,给我整整一个月+ 7天,如果我在最后一天做了,我只有7天时间来编辑记录。

首先看起来为此编写日期范围查询并不是一件容易的事。因为如果它在7日之前,你必须从上个月和本月的所有内容中选择所有内容(告诉当前日期)。但如果它是第8个,你必须从月初开始选择所有内容告诉当前数据(省略上个月)。因此查询将根据当前的日期而改变。

尝试在拔出数据后过滤数据似乎是一种浪费,因为您总是会提取更多记录然后用户可以编辑,然后您必须计算出日期切换。

拥有locked字段的优点还在于,您可以选择性地为用户解锁记录,以便他们可以再次编辑它,只需将1重新扫描为0.(-note-cron我上面概述的工作会重新锁定它。重点是可以允许他们编辑特定的记录而无需更改代码。

IMO,这是最好的方式。