SQL查询基于今天的日期

时间:2012-07-13 20:14:39

标签: mysql sql join date-arithmetic

我有一个查询,我昨晚得到了帮助,但我被困在了另一个位置。

我的代码是

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

4 个答案:

答案 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