2012-08-03 14 views
8

Quiero escribir seleccionar para buscar la fecha de la base de datos. En la base de datos tengo campo actiondate como tipo de fecha con fechas como esta 7/12/2012 17:21:33. Cómo escribir seleccionar para obtener todos los datos a partir del 7/12/2012 fecha?sql date select

so if I have db like this: 
1 7/12/2012 17:21:33 
2 7/12/2012 15:21:35 
3 8/12/2012 8:25:35 
4 9/12/2014 8:25:35 

I want get only these rows: 
1 7/12/2012 17:21:33 
2 7/12/2012 15:21:35 
+2

qué software de base de datos estás usando – Dave

Respuesta

7
select * from 
yourtable where yourDateColumn < '2012-12-8' and yourDateColumn >= '2012-12-07' 
+2

quizás "yourDateColumn> = '2012-12-07'" es mejor si quieres tomar la medianoche también – pater

+0

gracias! editado –

1

Puede utilizar BETWEEN para comparar las fechas:

select * 
from yourTable 
where yourDate between '2012-07-12' and '2012-08-12' 

O si usted está buscando una fecha en particular, que puede utilizar. Se puede cambiar el '2012-07-12' a un parámetro que podría ser aprobada en lo que podría conseguir cualquier fecha:

select * 
from yourTable 
where Cast(datediff(day, 0, yourDate) as datetime) = '2012-07-12' 
+0

La pregunta es acerca de un solo día; estás proporcionando datos por un mes y un día. –

+0

@JonathanLeffler editado, para incluir si solo quieren que se devuelva un día. – Taryn

2

creo que el Julius está pidiendo cómo obtener sólo las filas con 7/12/2012 17:21:33

Así que puede ofrecer una solución que ha demostrado ser correcto:

1) Tome un vistazo a la función Convert T-SQL en T-SQL Convert function

2) Cuando se quiere mira eso toma nota en los códigos de conversión

Convert codes

Fuente de la imagen: http://technet.microsoft.com/en-us/library/ms187928.aspx

Y ahora cuando me molesto todo el mundo con la teoría aquí es el código:

para Europa

select * from table_name 
where convert(varchar, column_that_has_date_in, 104) = '12.07.2012' 

Para EE.UU.

select * from table_name 
where convert(varchar, column_that_has_date_in, 101) = '07/12/2012' 

Y otra cosa vale la pena mencionar es que cuando escribimos en la instrucción SQL que obtenemos 0 filas:

select * from table_name 
where column_that_has_date_in like '%07/12/2012%' 

Esto se debe a que la consulta está buscando sólo para fechas ni porción de tiempo.