2014-01-28 30 views
0

我不明白!我想在數據庫中創建一個查詢...下面的輸入字段stamp_updated,2014-01-28 17:31:02。PHP MySQL哪裏有哪些SUBSTRING

現在我只希望有記錄與標籤28:

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

不幸的是,我沒有得到任何輸出,這是SUBSTRING?

PS: 應該是什麼:我記錄了端口流量,讓他在數據庫中寫入數據並希望每天都有統計數據。

做過提出新

現在我就站在logig proplem面前......我怎麼把它最好的時候,我儘量花作爲日常交通?

2014年1月26日:XX交通2014年1月27日:XX交通2014年1月28日:XX交通

<?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']; 


?> 
+0

什麼的'stamp_updated'列定義? – tadman

回答

3

您可以嘗試

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

這應該工作,假設該字段設置爲時間戳而不是字符串。 – ILikeTacos

+0

是的,這將工作在時間戳類型字段 –

+0

作爲字符串存儲日期時間是一個壞計劃,因爲你失去了很多這種功能。 'DAY()'函數正是您在這裏所需要的。 – tadman

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"; 
0

SUBSTRING (stamp_updated, 9,10)位置後,將返回10個charcters 9

- >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' "; 
+0

謝謝,我現在也瞭解SUBSTRING –