MySQL没有正确计算基于日期值的行

时间:2016-05-12 22:40:46

标签: php mysql database datetime

我试图计算具有相同日期值的行数,但它不会这样做。当我知道有相同日期值的行时,我无法将其计数高于3。这是我的代码:

$getDate = getdate();

$d = $getDate['mday'];
$m = $getDate['mon'];
$y = $getDate['year'];

$date = $y . '-' . $m . '-' . $d;


$query = "SELECT COUNT(*) FROM websites WHERE date='$date'";
mysql_select_db('garrettl_awards');
$total = mysql_query( $query, $conn );

$loop = $total/4;
echo $loop;

这是我的数据库表的图片:

database table

3 个答案:

答案 0 :(得分:0)

尝试此查询。

SELECT COUNT(*) FROM websites WHERE date>='$date' AND date < ('$date' + INTERVAL 1 DAY)

它会处理您的date列包含某些不正确的午夜值的可能性。

答案 1 :(得分:0)

尝试以下,可能适合您;)

如果$date的格式为yyyy-mm-dd(2016-05-01):

SELECT COUNT(*) FROM websites WHERE date_format(date, '%Y-%m-%d')='$date'

或者格式是yyyy-m-d like(2016-5-1):

SELECT COUNT(*) FROM websites WHERE date_format(date, '%Y-%c-%e')='$date'

<强>编辑:

试试这个;)

$query = "SELECT COUNT(*) FROM websites WHERE date_format(date, '%Y-%m-%d')='" . $date . "'";

答案 2 :(得分:0)

如果要比较“文本”两个值,请确保它们的格式相同:

格式化日期参数:

// For month and day to be on 2 digits
$d = sprintf("%'.02d", $getDate['mday']);
$m = sprintf("%'.02d", $getDate['mday']);

您在数据库中的日期:

SELECT COUNT(*) FROM websites WHERE date_format(date,'%Y-%m-%d')='$date'

它可以解决您的问题。