如果在特定列中有超过x个带有未来日期的条目

pcrecxhr  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(303)

我正在研究一个大学数据库,它不断更新新的课程。
通常情况下,学生在同一天学习课程,但我注意到一些条目的未来日期,因此我考虑运行一个sql查询来分析一个特定的列,如果它找到两个以上具有未来日期的条目(当前的1个,格式为yyyy-mm-dd),则应该使用php mail将我发送出去,否则,它将呼应没有找到未来的教训。
我认为可以通过sql查询将其集成到php代码中,但我不确定如何做到这一点,因此任何帮助都将不胜感激。
我想知道我目前的方法是否正确:

$sql = "SELECT publisheddate FROM lessons WHERE CONVERT(char(10), GetDate() +1,126);
$result = $conn->query($sql);
if ($result->num_rows < 2) {
    echo "2 new lessons for tomorrow";
}
} else {
    echo "0 future lessons";
yacmzcpb

yacmzcpb1#

你的 where 子句需要指明将转换日期与哪个列进行比较。此外,你可能会更好地返回一个 count(*) 而不是将所有行返回到php脚本,并让php对其进行计数。如果您明天碰巧有一百万个类(或者如果学校在数据库中意外地复制了一个类一百万次……),您的脚本将不得不等待通过网络接收一百万行,而不是一个整数。
尝试这样的sql语句(您已经指出 publisheddate 是一个 date 数据类型,所以我不想麻烦地将其转换为日期):

SELECT 
    count(*) 
FROM 
    lessons 
WHERE 
    publisheddate = DATE_ADD(CURDATE(), INTERVAL +1 DAY)

这将返回一个整数,即有多少行符合该条件,您的php脚本可以使用该整数。

相关问题