2013-04-06 55 views
0
之間檢索從MySQL數

考慮下表:如何到2小時

CREATE TABLE `trans` (
    `transid` varchar(255) NOT NULL, 
    `affid` varchar(255) NOT NULL, 
    `timestamp` varchar(255) NOT NULL, 
    UNIQUE KEY `transid` (`transid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

和PHP代碼:

case "today": 
    $sale=[]; 
    for ($i = 0 ; $i < 23 ; $i++) { 
     $hours[]= $i; 
     $clicks[$i]=$api["clicks"][$i]; 
    }  
    break; 

我想添加到$sale陣列銷售當今計數每個小時。例如:$ hours [5] =從trans中選擇count(*),其中date在今日04:59:59 - 06:00:00之間。

+0

你想爲當前銷售的每小時詳細使用索引天?哪個字段代表銷售?我不明白你的PHP代碼,因爲它根本沒有關係到數據庫。 – 2013-04-06 00:17:59

+0

時間戳不應該是'varchar' – hd1 2013-04-06 00:18:23

+0

時間戳應該存儲爲像? – 2013-04-06 00:22:53

回答

0

事情是這樣的:

<?php 
$from=strtotime("".date("Y-m-d")." 04:59:59"); 
$to=strtotime("".date("Y-m-d")." 06:00:00"); 
?> 

"SELECT * FROM `your_table` 
WHERE `date` > '".$from."' 
AND `date` < '".$to."'" 

可能?

如果您需要當前的UTC時間而不是date()獲得的當地時間,則可以使用gmdate()

+1

你需要引用時間 – Barmar 2013-04-06 00:16:56

+0

但日期存儲爲unix時間戳 – 2013-04-06 00:17:54

+0

我現在編輯了答案。知道;;) – 2013-04-06 00:40:28

0

首先,如果您嘗試使用您的timestamp字段的unix時間戳,請立即停止它。你已經讓你的生活變得痛苦。使用MySQL時間戳字段。實際上很少有使用unix時間戳字段的好主意的用例。

如果你有一個時間戳字段,你可以做類似

SELECT HOUR(`timestamp`) AS `hour`, SUM(`transid`) AS `transaction_count` 
FROM trans 
WHERE `timestamp` LIKE CONCAT(DATE(NOW()),'%') 
GROUP BY `hour` 
ORDER BY `hour` ASC 

這將使你的銷售統計當天的每個小時。請確保在timestamp上添加索引以獲得最佳查詢性能。

如果沒有timestamp這樣做,那麼你需要利用額外的轉換FROM_UNIXTIME(),這將阻止您能夠對timestamp