0

我有一个问题,昨晚我得到了帮助,但我又陷入了困境。

我的代码是

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id

我现在想做的只是显示在今天输入的结果?日期列在table2. 日期列的格式是日期和时间(例如 1341241153),但我只需要检查日期是否与当天匹配。我希望这很清楚。

任何帮助将不胜感激!

编辑:这是一个 MySQL 数据库。到目前为止,我已经尝试了所有解决方案,但没有任何效果。抱歉没说清楚!!

最终编辑:这个问题不够清楚,所以我再次发布以获得快速回复。完整解决方案的新问题可以在这里看到一个链接

4

4 回答 4

1

如果您group需要 ahaving而不是 a where

SELECT a.name, COUNT(*) AS num 
FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id
having b.date  = 1341241153
于 2012-07-13T20:19:24.417 回答
0

如果您经常这样做,您可以创建自己的函数来执行此操作,但这里有一些代码可以将传递给它的任何日期展平:

SELECT a.name, COUNT(*) AS num
FROM table2 b 
INNER JOIN table1 a ON b.status_id=a.id 
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, a.DateColumn)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
GROUP BY status_id
于 2012-07-13T20:19:05.917 回答
0

不确定这是哪种数据库类型,如果是 Oracle,您只需要截断日期:

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
WHERE TRUNC(SYSDATE) = TRUNC(b.dateColumn)
GROUP BY status_id

如果是 MySQL 或 MSSQL,则语法略有不同,但同样简单。

于 2012-07-13T20:20:11.417 回答
0

在 SQL Server 2008 上,您可以使用:

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
WHERE dateValue BETWEEN 
   CAST(GETDATE() AS DATE) AND DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) 
GROUP BY status_id
于 2012-07-13T20:22:36.287 回答