PHP MySQL WHERE SUM WHERE SUBSTRING

时间:2014-01-28 16:42:39

标签: php mysql sum substring where-clause

我不明白!我想在数据库中的以下输入字段下创建一个查询... stamp_updated,2014-01-28 17:31:02。

现在我只想拥有标签28的记录:

$ qry = "SELECT SUM (bytes) AS total FROM acct_v4 WHERE SUBSTRING (stamp_updated, 9,10) = '28 '";

不幸的是,我没有输出,这是SUBSTRING?

PS: 应该是什么:我记录了端口流量,让他在数据库中写入并希望每天都有统计数据。

完成了问新

现在我站在logig proplem面前......当我尝试用作日常交通时,我该怎么做到最好?

  

2014-01-26:xx traffic 2014-01-27:xx traffic 2014-01-28:xx traffic

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<?php 

function formatBytes($size, $precision = 2)
{
    $base = log($size) / log(1024);
    $suffixes = array('', 'k', 'MB', 'GB', 'TB');   

    return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)];
}


$db=mysql_connect("localhost","traffic","....."); 
mysql_select_db("traffic",$db);
$qry = "SELECT SUM(bytes) AS total FROM acct_v4 
          WHERE SUBSTRING(stamp_updated,9,2) = '28' ";


$select = mysql_query($qry);
$result = mysql_fetch_array($select);


echo 'Summe: '.formatBytes($result['total']);  
//echo $result['total'];


?>

3 个答案:

答案 0 :(得分:3)

你可以尝试

SELECT SUM (bytes) AS total FROM acct_v4 WHERE DAY(stamp_updated) = 28;

答案 1 :(得分:0)

如果没有看到你的SHOW CREATE TABLE,看起来就好像你今天的日期是28。你应该使用MySQL的DAY功能。这假定stamp_updated是正确的DATE或DATETIME字段。

$qry = "SELECT SUM (bytes) AS total FROM acct_v4 WHERE DAY(stamp_updated) = 28";

答案 2 :(得分:0)

你的SUBSTRING (stamp_updated, 9,10)将在第9位后返回10个字符

- &GT; 28 17:31:0

这是SUBSTRING

的基础
 SUBSTRING(str, pos, len)

所以在你的情况下你应该像这样改变10到2

  SUBSTRING (stamp_updated, 9,2)

它会起作用 您的整个查询将是

 $ qry = "SELECT SUM(bytes) AS total FROM acct_v4 
          WHERE SUBSTRING(stamp_updated,9,2) = '28' ";