我正在开发一个大学数据库,该数据库会不断更新新类(class)。
通常情况下,学生确实会在同一日期学习类(class),但我注意到某些条目的 future 日期,因此我正在考虑运行一个 sql 查询来分析特定列,以及是否发现超过 2 个条目 future 的日期(从当前的+1,格式为YYYY-MM-DD),应该使用php邮件将我邮寄出去,否则,它将回显没有找到 future 的类(class)。
我认为这可以在 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";
最佳答案
您的 where
子句需要指示您将转换后的日期与哪一列进行比较。此外,您可能最好从数据库中返回 count(*)
行,而不是将所有行返回到 PHP 脚本,然后让 PHP 对其进行计数。如果明天碰巧有一百万个类(class)(或者学校不小心在数据库中重复了一个类(class)一百万次......),您的脚本将不得不等待通过网络接收一百万行,而不是单个整数.
尝试这样的 SQL 语句(您已经指出 publisheddate
是 date
数据类型,因此我不会费心将其转换为日期):
SELECT
count(*)
FROM
lessons
WHERE
publisheddate = DATE_ADD(CURDATE(), INTERVAL +1 DAY)
这将返回一个整数,表示有多少行符合该条件,您的 PHP 脚本可以使用该整数。
关于php - 如果特定列中有超过 X 个带有 future 日期的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280756/