如果超过X个条目,并且在特定列中具有将来的日期

问题描述 投票:0回答:1

我正在建立一个大学数据库,不断更新新课程。

通常情况下,学生确实在同一天学习了课程,但我注意到某些条目的未来日期,所以我正在考虑运行一个sql查询来分析一个特定的列,如果它找到了超过2个条目的未来日期(当前的格式为YYYY-MM-DD的+1),它应该用php邮件把我邮寄出来,否则,它会回应没有找到未来的课程。

我认为这可以在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";
php mysql sql
1个回答
0
投票

您的where子句需要指明您将转换日期与之比较的列。另外,你可能最好从数据库中返回行的count(*),而不是将所有行都返回到PHP脚本,并让PHP计算它。如果你明天碰巧有一百万个课程(或者如果学校在数据库中偶然重复了一百万次课程......),你的脚本将不得不等待通过网络接收一百万行,而不是一个整数。

尝试这样的SQL语句(你已经指出publisheddate是一个date数据类型,所以我不打算将它转换为日期):

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

这将返回一个整数,表示您的PHP脚本可以使用的符合该条件的行数。

© www.soinside.com 2019 - 2024. All rights reserved.