2014-01-17 51 views
0

我正在尝试每天获得每位员工的转换计数。我从中抽出的表格是以小时/分钟/秒为单位的长日期形式,并认为这就是我无法将它们作为长期日期时间的个人记录B/C处理的交易计数的原因。如何将日期转换为分钟和秒钟SSMS

所以在Select查询中,我试图转换日期,但得到一个错误消息:无法调用日期的方法。

这里是我的代码

SELECT ITR_EmployeeID, 
CONVERT(DATE, ITR_TransDate, 1) AS TransDate, 
COUNT(ITR_TransType) AS TC 
FROM dbo.ITR 
WHERE (ITR_EmployeeID IN (N'sweda', N'bakja', N'gebwa')) 
AND (ITR_TransType LIKE N'PO Inspect') 
AND (ITR_TransDate BETWEEN @FromDate AND @ToDate) 
GROUP BY ITR_EmployeeID, ITR_TransDate 

我所寻找的是Transtype通过之日起计算,并通过雇员

分组

谢谢!

+0

Microsoft SQL Server或MySQL? –

+0

SQL Server 2008,谢谢! – jballard81

+0

你不能这样做:'CONVERT(DATE,ITR_TransDate)'?.然后,您需要按照该表达式进行分组,而不是“ITR_TransDate”。如果您正在过滤这样的DATETIME列 – Lamak

回答

4

您应该在查询窗口中执行此操作,而不是在某个视图或查询设计器中执行此操作。停止使用这些。请。

SELECT 
    ITR_EmployeeID, 
    CONVERT(DATE, ITR_TransDate) AS TransDate, 
    COUNT(ITR_TransType) AS TC 
FROM dbo.ITR 
WHERE (ITR_EmployeeID IN (N'sweda', N'bakja', N'gebwa')) 
AND (ITR_TransType LIKE N'PO Inspect') 
AND (ITR_TransDate >= @FromDate AND ITR_TransDate < DATEADD(DAY, 1, @ToDate)) 
GROUP BY ITR_EmployeeID, CONVERT(DATE, ITR_TransDate); 

这样的语句在SQL Server Management Studio中正确的结果工作(同样,在查询窗口,而不是马车可视化设计器)。 然后让它在你试图实现它的任何应用程序代码中工作,并分别处理这些问题(或创建一个存储过程并避免将T-SQL查询文本合并到其他应用程序中的任何问题) 。

+0

太棒了!谢谢。我也非常感谢博客链接,我将在接下来的几个小时里看到它!另外,我可以说我不喜欢使用SSMS,你能推荐一个不同的软件吗?我不知道我使用的查询设计窗口可能会导致此问题! – jballard81

+0

@ jballard81谢谢!如果你喜欢这篇文章,你可能也会喜欢[这一个](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries的.aspx) –

相关问题