2011-03-08 16 views
6

Estoy intentando escribir una consulta SQL que solo debe elegir el recuento con fecha específica, no con la hora.Consultar fecha y hora en SQL sin tiempo

select count(*) from xyz where time='2010-01-21' 

pero no está devolviendo ningún resultado.

+0

¿Cuál es el tipo de campo de la columna de tiempo? –

+0

datetime es el tipo de datos – alice7

+0

¿En qué RDBMS está usted? –

Respuesta

4

Si usted tiene un campo de fecha y hora, y que quería coincidir con una fecha:

select count(*) from xyz where time BETWEEN '2010-01-21' AND '2010-01-22 '

MYSQL Date Time ref

+0

el primero que ya probé y no funciona. – alice7

+0

Esto hará que la columna 'time' se emita como una cadena y, por lo tanto, no sea sargable. –

+0

@martin: es suficiente, lo he eliminado gracias – Jason

1

Try (MySQL)

SELECT COUNT(*) FROM xyz WHERE DATE(datetime_col) = '2010-01-21' 

en T-SQL (MSSQL) (un poco feo, pero debería funcionar):

SELECT * FROM xyz WHERE CAST(CONVERT(varchar(8), datetime_col, 112) AS DATETIME) <= '2011-01-21' 
+0

Supongo que el OP está en el servidor sql pero acaba de estropear las etiquetas. –

+0

Im gettihg este error: 'Fecha' no es un nombre de función incorporado reconocido. – alice7

7

Para SQL Server 2008, debe ser capaz de utilizar el tipo de datos date:

select count(*) from xyz where cast(time as date) = '2010-01-21' 
+0

+1 Comenté originalmente que esto no es sargable y no puedo usar un índice [Pero esta solicitud de conexión] (http://connect.microsoft.com/SQLServer/feedback/details/526431/make-more-functions-sargable) dice que ** de hecho es ** sargable (¡novedades para mí!). –

Cuestiones relacionadas