我有一个查询,我昨晚得到了帮助,但我被困在了另一个位置。
我的代码是
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数据库。到目前为止,我已经尝试了所有解决方案,并且没有工作。很抱歉没有更清楚!!
最终编辑:问题不够明确,所以我再次发布,以便快速回复。完整解决方案的新问题可以在这里看到a link
答案 0 :(得分:1)
如果您group
需要having
而不是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
答案 1 :(得分: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
答案 2 :(得分: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,语法略有不同,但同样简单。
答案 3 :(得分: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