SQL Server查询GROUP BY与Where

时间:2011-07-22 07:56:21

标签: sql sql-server where-clause

我的表格tblEvents包含dEvent_Date, dEvent_Time, tEvent_Emp_Code_num

我必须将所有日期分组并从每个日期获得所有最短时间。

例如我写下面的查询,但没有打印。

SELECT dEvent_Date, MIN(dEvent_Time) as minTime 
FROM tblEvents 
WHERE
     tEvent_Emp_Code_num = 26 AND dEvent_Date = 11/18/2010 
GROUP BY dEvent_Date

之后我测试了下面的查询,它可以工作,但它打印所有日子,我只需要指定日期的数据。

SELECT dEvent_Date, MIN(dEvent_Time) as minTime 
FROM tblEvents 
WHERE tEvent_Emp_Code_num = 26 GROUP BY dEvent_Date

你能帮助我吗?

3 个答案:

答案 0 :(得分:0)

您的日期如何存储在表格中? MySQL的默认日期格式为:yyyy-mm-dd。您还必须用单引号括起日期。

你应该搜索:

其中dEvent_Date ='2010/11/18'

如果您没有指定日期格式。

答案 1 :(得分:0)

如果db是sql,则使用Format来检查值在DB ,,,,,

或者你是,,,, 你必须将日期值转换为'2010-11-18',如

$date   =   date('Y-m-d',strtotime(11/18/2010)); 

   dEvent_Date = $date 

答案 2 :(得分:0)

我有同样的问题,我在mysql中使用了cast函数,我的查询看起来像

CREATE VIEW v_a AS SELECT
  tblEvents .*,
  EXTRACT(YEAR FROM dEvent_Date) AS 'year',
  EXTRACT(MONTH FROM dEvent_Date) AS 'month',
  DAYOFMONTH(dEvent_Date) AS 'day'
FROM tblEvents WHERE tEvent_Emp_Code_num = 26;
SELECT
  v.year,
  v.month,
  v.day,
  count(v.id)
FROM v_a AS v
GROUP BY v.year,v.month,v.day

对于SQL SErver,您可以使用CONVERT函数

SELECT CONVERT(VARCHAR(8), GETDATE(), 4) AS [DD.MM.YY]

或投射功能

SELECT CAST(YEAR(GETDATE()) AS VARCHAR(4)) 

也许跟着帖子更有用

Get Date Only Function