gpt4 book ai didi

php - SQL选择日期范围

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:30 26 4
gpt4 key购买 nike

我有一个包含日期列的表格,格式为 mm/dd/yyyy。

所以我正在尝试执行以下操作:

<?php
$start = '05/01/2016';
$end = '05/31/2016';
$stmt = $link->prepare('SELECT COUNT(*) date from dates WHERE user=:user AND date between '$start' AND '$end'');
$stmt->bindParam(':user', $user, PDO::PARAM_STR);
if($stmt->execute()) {
$result = $stmt->fetchAll();
foreach($result as $row) {
if($row[0] > 0) {
echo $row[0];
}
}
}
?>

我认为问题可能出在多个 AND 运算符上。

最佳答案

您正在为用户使用占位符,这很好,但为什么不为开始和结束日期使用占位符?

我建议你使用这个:

$stmt = $link->prepare('SELECT COUNT(*) date from dates WHERE user=:user AND date between :start AND :end');
$stmt->bindParam(':user', $user, PDO::PARAM_STR);
$stmt->bindParam(':start', $start, PDO::PARAM_STR);
$stmt->bindParam(':end', $end, PDO::PARAM_STR);

无论如何日期格式应该是YYYY-MM-DD ,但阅读您的评论似乎您正在使用字符串来存储日期,格式为 MM/DD/YYYY .

虽然此查询将返回您所期望的:

"SELECT COUNT(*) date
from dates
WHERE user=:user AND str_to_date(date, 'MM/DD/YYYY') between :start AND :end"

使用 str_to_date 您可以将字符串转换为日期,并且比较会按预期成功,但是我强烈建议您使用 DATE 列存储日期,您始终可以在应用层格式化日期。

关于php - SQL选择日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37013640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com