Obtener Fechas solo de Dia-mes-Año sin Horas

publicado por: Anonymous

¿Cómo puedo obtener fechas sin horas ni minutos en una consulta de SQL para utilizar un COUNT? Necesito que me muestre la cantidad repetida y día que se realizó. ¿Alguna sugerencia? Ojo, no es MySQL necesito es para SQL server 2008 R2

  SELECT TOP 2000 
    a.UserID,
    (a.CharName) as maton,
    (a.DeadCharName) as Victima,
    (b.[level])as nivel_de_Victima, 
    COUNT (a.DeadCharName) As  Veces,
    a.actiontime <<---- Campo Fecha a selecionar
    FROM PS_GameLog.dbo.Kill_Log a
    INNER JOIN PS_GameData.dbo.Chars b
    on a.CharID = b.CharID
    WHERE a.CharID = 62336
    ORDER BY Veces DESC
    GROUP BY a.UserID,a.CharName,a.DeadCharName,b.[level] 
    ORDER BY Veces DESC

Ejemplo, de fechas en que formato están, necesito tomar los 11 dígitos obvio incluyendo los guiones.

2016-12-23 15:42:29.000
2016-12-23 15:42:28.000
2016-12-23 15:42:30.000

solución

Si tienes SQL Server 2008+, puedes convertirlo a DATE:

SELECT TOP 2000 a.UserID,
                a.CharName as maton,
                a.DeadCharName as Victima,
                b.[level] as nivel_de_Victima, 
                COUNT(a.DeadCharName) as Veces,
                CONVERT(DATE,a.actiontime) ActionTime
FROM PS_GameLog.dbo.Kill_Log a
INNER JOIN PS_GameData.dbo.Chars b
    ON a.CharID = b.CharID
WHERE a.CharID = 62336
GROUP BY a.UserID,
         a.CharName,
         a.DeadCharName,
         b.[level],
         CONVERT(DATE,a.actiontime)
ORDER BY Veces DESC;

Si no, puedes convertirlo a un string que contenga sólo el año, mes y día:

SELECT TOP 2000 a.UserID,
                a.CharName as maton,
                a.DeadCharName as Victima,
                b.[level] as nivel_de_Victima, 
                COUNT(a.DeadCharName) as Veces,
                CONVERT(VARCHAR(8),a.actiontime,112) ActionTime
FROM PS_GameLog.dbo.Kill_Log a
INNER JOIN PS_GameData.dbo.Chars b
    ON a.CharID = b.CharID
WHERE a.CharID = 62336
GROUP BY a.UserID,
         a.CharName,
         a.DeadCharName,
         b.[level],
         CONVERT(VARCHAR(8),a.actiontime,112)
ORDER BY Veces DESC;
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *