probar esto, podría ser útil para usted que utiliza una de estas dos maneras de trabajar con la porción de tiempo en los campos de fecha y hora a hacer comparaciones EX: obtener un registro de usuario por un día , es decir, desde la fecha de hoy a las 12:00:00 AM hasta la fecha de hoy, pero a las 12:00:00 PM
DECLARE @FromDate datetime
DECLARE @ToDate datetime
SET @FromDate = GETDATE()
SET @ToDate = GETDATE()
Print '------------------------ '
PRINT @FromDate
PRINT @ToDate
SET @FromDate = CONVERT(DATETIME, CONVERT(varchar(11),@FromDate, 111) + ' 00:00:00', 111)
SET @ToDate = CONVERT(DATETIME, CONVERT(varchar(11),@ToDate, 111) + ' 23:59:59', 111)
Print '------------------------ '
PRINT @FromDate
PRINT @ToDate
DECLARE @TEST_FROM DATETIME
SET @TEST_FROM = dateadd(month,((YEAR(@FromDate)-1900)*12)+MONTH(@FromDate)-1,DAY(@FromDate)-1) + ' 12:00:00'
DECLARE @TEST_TO DATETIME
SET @TEST_TO = dateadd(month,((YEAR(@ToDate)-1900)*12)+MONTH(@ToDate)-1,DAY(@ToDate)-1) + ' 23:59:59'
Print '------------------------ '
PRINT @TEST_FROM
PRINT @TEST_TO
Esto imprimirá lo siguiente en pantalla del editor de consultas SQL
------------------------
Dec 28 2011 3:18PM
Dec 28 2011 3:18PM
------------------------
Dec 28 2011 12:00AM
Dec 28 2011 11:59PM
------------------------
Dec 28 2011 12:00PM
Dec 28 2011 11:59PM
Referencias el forma de usar el Convert es desde mi experiencia, la otra forma es desde este enlace http://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx Diviértase :)
Si necesita comparar meses, ¿por qué no simplemente extraer el mes de la fecha y hora con 'mes()'? –