如果在特定栏中有X个条目,且带有未来日期,

时间:2018-09-11 16:53:36

标签: php mysql sql

我正在研究一个大学数据库,该数据库将不断更新新课程。

通常,学生确实会在同一日期学习课程,但是我已经注意到某些条目的将来日期,因此我正在考虑运行一个sql查询,该查询将分析特定的列,并且发现超过2个条目将来的日期(从当前日期开始,以YYYY-MM-DD的格式为+1),则应使用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";

1 个答案:

答案 0 :(得分:0)

您的where子句需要指出将转换日期与哪个列进行比较。此外,您最好从数据库中返回count(*)行,而不是将所有行都返回到PHP脚本并由PHP对其进行计数。如果明天碰巧有一百万堂课(或者学校意外地在数据库中重复了一百万堂课……),您的脚本将不得不等待通过网络接收一百万行,而不是一个整数

尝试这样的SQL语句(您已经指出publisheddatedate数据类型,所以我不会费心将其转换为日期):

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

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