Richard Chamorro
16/julio/08
Estaba realizando una consulta en T-SQL para mostrar el número de pedidos realizados por día entre dos fechas. Algo relativamente simple, ¿verdad?

Pues aunque parezca increíble, SQL Server no proporciona una función sencilla que permita obtener únicamente la fecha de un campo de tipo DateTime ignorando la hora almacenada. En el caso del informe que quería realizar, me impedía agrupar correctamente los pedidos por fecha porque el campo DateTime también almacena la hora.

Afortunadamente, Anatoly Lubarsky nos proporciona una solución bastante sencilla.
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, CAMPO_FECHA))
Donde CAMPO_FECHA es el nombre del campo de la tabla que contiene la fecha que quieres procesar. También puedes utilizar GETDATE() en vez de CAMPO_FECHA para obtener únicamente la fecha de hoy.

Esta es la consulta SQL resultante:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, DateCreated)) as OrderDate, 
COUNT(*) as OrdersCount FROM CommerceOrders
GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, DateCreated))
ORDER BY OrderDate
Vuestros comentarios son bienvenidos.
Escribe:   Richard Chamorro
Etiquetas:
2 Comentarios
1
José Manuel
El otro dia me encontré con este problema en un formulario de VB.NET. Voy a probarlo. Gracias.
2
amendoza OTRA OPCIÓN
LES DEJO ESTE APORTE SEÑORES --COMO CAMPO SET DATEFORMAT DMY SELECT TOP 1 Convert(Char(10), FECHA_TRAN , 101)FROM BITACORA --EN UNA CONDICIÓN SELECT * FROM BITACORA WHERE Convert(Char(10), FECHA_TRAN , 101) = '07/08/2008' DONDE FECHA_TRAN PUEDE SER EL NOMBRE DEL CAMPO QUE UDS QUIERAN UTILIZAR. SALUDOS Y BENDICIONES XD
Añadir un nuevo comentario
Titulo
Nombre de usuario
Copyright 2008 - Avanzis S.L.
C/ Seúl 88, nº1 dcha. Pta 1. 46900 Torrente (Valencia)
Telf: +34 96 158 01 84
Fax: +34 96 156 59 92