2013-04-01 59 views
0

我在我的数据库中有一个简单的日志表。对于每个页面访问,插入一行。现在我想为今天和昨天总结一个专栏。CASE BETWEEN声明

我尝试以下查询:

SELECT Sum(CASE 
      WHEN `time` > 1364767200 THEN `sqlquerycount` 
      end) AS `today`, 
     Sum(CASE 
      WHEN `time` BETWEEN 1364684400 AND 1364767200 THEN `sqlquerycount` 
      end) AS `yesterday` 
FROM `log` 

导致以下PHP脚本:

$sql = "SELECT 
     SUM(CASE WHEN `time` > ".strtotime("today")." THEN `sqlQueryCount` END) AS `today`, 
     SUM(CASE WHEN `time` BETWEEN ".strtotime("yesterday")." AND ".strtotime("today")." THEN `sqlQueryCount` END) AS `yesterday` 
    FROM `log`"; 

“昨天”的剩余空,但我没有看到与此查询任何问题。任何想法?

+0

你使用'mariadb'或'mysql'吗? – Kermit

+0

我正在使用MariaDB。 – Zwirbelbart

+0

'SELECT COUNT(*)FROM log WHERE time BETWEEN 1364684400 AND 1364767200'的结果是什么? – Kermit

回答

2

我敢打赌为

$sql = "SELECT 
     SUM(CASE WHEN `time` > ".strtotime("today")." THEN `sqlQueryCount` ELSE 0 END) AS `today`, 
     SUM(CASE WHEN `time` BETWEEN ".strtotime("yesterday")." AND ".strtotime("today")." THEN `sqlQueryCount` ELSE 0 END) AS `yesterday` 
    FROM `log`"; 

...提供sqlQueryCount是你想做的总和列!

+0

我对此表示满意,因为OP可能希望看到数字结果。 – Kermit

+0

+1。除了我的问题的评论,这似乎是一个解决方案。谢谢! – Zwirbelbart