【问题标题】:MySQL not counting rows based on date values properlyMySQL没有正确计算基于日期值的行
【发布时间】:2016-05-12 22:40:45
【问题描述】:

我正在尝试计算具有相同日期值的行数,但它不会这样做。当我知道有相同日期值的行时,我无法让它计数高于 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;

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

【问题讨论】:

    标签: php mysql database datetime


    【解决方案1】:

    试试这个查询。

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

    它将处理您的date 列包含的某些值并非恰好在午夜的可能性。

    【讨论】:

      【解决方案2】:

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

      格式化你的日期参数:

      // 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'
      

      它应该可以解决您的问题。

      【讨论】:

        【解决方案3】:

        尝试关注,可能对你有用;)

        如果$date的格式是yyyy-mm-dd like(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 . "'";
        

        【讨论】:

        • @Garrett 你能发布一些示例数据吗?
        • 是的,比如什么?抱歉,我是新手。
        • @Garrett 喜欢您表中的数据和您的预期数据。
        • 我的问题中包含了,你看不到吗?
        • @Garrett 你的帖子格式不正确,所以我看不到,反正我已经为你编辑了,你的专栏date是什么类型的?
        猜你喜欢
        • 2013-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-15
        • 2021-03-27
        • 1970-01-01
        相关资源
        最近更新 更多