2010-05-19 45 views
1

我作出这样的回报,我认为每天创建的存储过程的计数查询如下
每天创建多少个存储过程(转换日期时间的问题)?

SELECT convert(varchar, crdate, 103) as Date,Count(*) as Counter 
FROM sysobjects 
WHERE (xtype = 'p') AND (name NOT LIKE 'dt%') 
Group by convert(varchar, crdate, 103) 

和已经工作,但日期出现在字符串格式,我不能为了它,如下面

01/03/2010 3 
01/04/2008 4 
01/05/2010 5 
01/11/2008 1 
01/12/2008 4 
02/03/2008 1 
02/03/2010 2 
02/04/2008 4 
02/05/2010 2 
02/11/2008 2 
02/11/2009 2 
02/12/2008 4 
03/01/2010 1 
03/02/2010 2 
03/03/2010 2 
03/04/2008 2 
03/04/2010 2 
03/05/2008 1 
03/05/2010 2 

我想要在这日期是日期时间格式,我可以让order by成功,我想convert(datetime, crdate, 103)但它显示出充分的日期

有什么想法怎么办?

+0

空间饼干,你应该让包括一些关于转换日期编辑这个问题的标题。 – DJTripleThreat 2010-05-19 06:12:11

+0

好的,我现在做.. thnx – 2010-05-19 06:43:02

回答

1

要获得可排序的日期,您需要年份,然后是月份,然后是日期。使用格式“112”。

SELECT convert(varchar, crdate, 112) as Date,Count(*) as Counter 
FROM sysobjects 
WHERE (xtype = 'p') AND (name NOT LIKE 'dt%') 
Group by convert(varchar, crdate, 112) 
order by Date 

其中给出了这样的:

Date  Counter 
20040711 124 
20040713 1 
20040725 1 
20040726 2 
20040803 6 

如果你想找到正确的排序顺序,但不同格式的日期,那么你可以使用子查询这个样子。

select CONVERT(varchar, GroupDate, 103) Date, Counter 
FROM (
    SELECT MIN(crdate) as GroupDate,Count(*) as Counter 
    FROM sysobjects 
    WHERE (xtype = 'p') AND (name NOT LIKE 'dt%') 
    Group by convert(varchar, crdate, 112) 
) A 
order by GroupDate 

这将产生

Date  Counter 
11/07/2004 124 
13/07/2004 1 
25/07/2004 1 
26/07/2004 2 
03/08/2004 6 
+0

谢谢,这就是我需要 – 2010-05-19 07:13:22

1

如何:

select dt, COUNT(*) from 
(
    SELECT convert(datetime, convert(varchar, crdate, 112)) as dt 
    FROM sysobjects 
    WHERE (xtype = 'p') AND (name NOT LIKE 'dt%') 
) DayOnly 
group by dt 
order by dt asc 
+0

另一个正确的答案 – 2010-05-19 07:13:46

1
SELECT DATEADD(day, DATEDIFF(day, 0, o.crdate), 0) [Date], 
     COUNT(*) [Counter] 
FROM sys.sysobjects o 
WHERE o.xtype = 'p' AND o.name NOT LIKE 'dt%' 
GROUP BY DATEADD(day, DATEDIFF(day, 0, o.crdate), 0) 
+1

另一个正确的答案 – 2010-05-19 07:14:05

相关问题