php SELECT (计数)在 mysql/pdo WHERE 格式化日期
php SELECT (count) in mysql/pdo WHERE formatted date
我需要 select(计数)具有按 YEAR-MONTH-DAY 格式化的特定日期的行。
我试试
$date = $_GET['date'];
// requete qui recupere les evenements
$result = "SELECT COUNT(*) FROM evenement WHERE STR_TO_DATE(start, '%Y-%m-%d') = $date";
// connexion a la base de donnees
try {
$bdd = new PDO('mysql:host=;dbname=', '', '');
} catch(Exception $e) {
exit('Impossible de se connecter a la base de donnees.');
}
$sth = $bdd->query($result);
echo json_encode($sth->fetchColumn());
其中日期变量是具有该格式的日期。我想计算行数和 return 该日期的行数。
我也试试
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(start, '%Y-%m-%d') = $date";
和
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(DATE(start), '%Y-%m-%d') = $date";
但没有任何效果
有什么想法吗?
谢谢
这样改
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(start, '%Y-%m-%d') = '".$date."'";
您需要将 $date 括在 '' 引号中,否则它将执行减法,如 (2014-10-01 = 2003)
您应该将常量转换为日期,而不是列。所以,我的第一次尝试是:
SELECT COUNT(*)
FROM evenement
WHERE start = DATE('$date');
但是,这可能行不通。您可能需要使用具有适当格式的 str_to_date()
。
此方法更好的原因是优化器可以利用 evenement(start)
上的索引。
所有的回复和评论都导致了这个答案
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(DATE(start), '%Y-%m-%d') = DATE('".$date."')"
问题是 $date 变量需要 DATE($date) 而在 SELECT 中需要引号。
我需要 select(计数)具有按 YEAR-MONTH-DAY 格式化的特定日期的行。
我试试
$date = $_GET['date'];
// requete qui recupere les evenements
$result = "SELECT COUNT(*) FROM evenement WHERE STR_TO_DATE(start, '%Y-%m-%d') = $date";
// connexion a la base de donnees
try {
$bdd = new PDO('mysql:host=;dbname=', '', '');
} catch(Exception $e) {
exit('Impossible de se connecter a la base de donnees.');
}
$sth = $bdd->query($result);
echo json_encode($sth->fetchColumn());
其中日期变量是具有该格式的日期。我想计算行数和 return 该日期的行数。
我也试试
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(start, '%Y-%m-%d') = $date";
和
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(DATE(start), '%Y-%m-%d') = $date";
但没有任何效果
有什么想法吗?
谢谢
这样改
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(start, '%Y-%m-%d') = '".$date."'";
您需要将 $date 括在 '' 引号中,否则它将执行减法,如 (2014-10-01 = 2003)
您应该将常量转换为日期,而不是列。所以,我的第一次尝试是:
SELECT COUNT(*)
FROM evenement
WHERE start = DATE('$date');
但是,这可能行不通。您可能需要使用具有适当格式的 str_to_date()
。
此方法更好的原因是优化器可以利用 evenement(start)
上的索引。
所有的回复和评论都导致了这个答案
$result = "SELECT COUNT(*) FROM evenement WHERE DATE_FORMAT(DATE(start), '%Y-%m-%d') = DATE('".$date."')"
问题是 $date 变量需要 DATE($date) 而在 SELECT 中需要引号。