我有一个查询,用户填写每个月每天的记录,我希望,用户可以编辑/删除他的数据,直到下个月7日。
我使用import { FormControl, FormGroup, Validators } from '@angular/forms';
函数获得了日期之间的差异,但无法理解如何比较该记录填充日期少于下个月的第7个。
date()
答案 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,这是最好的方式。