Buenas,
tengo una db de noticias con una columna llamada fecha con datos del tipo 20070102,
para no tener que hacer 3 columnas diferentes para cada dato (tal vez sea mala idea a la larga?)... y ahora quiero hacer un buscador para que el usuario busque en el archivo segun el ano, o ano + mes... como podria hacer algo asi? es decir que si quiere ver todas las noticias de 2005, como haria para mostrar todas las filas en cuyo dato de la columna fecha sea 2005... ?
Gracias.
usa YEAR(date)
Devuelve el año para una fecha
funciones con fechas http://mysql.conclase.net/curso/index.php?cap=011a
Pero para esa funcion no tendria que estar la fecha en formuato YYYY-MM-DD? es decir, separando los datos con algun caracter...
Saludos
cambia el tipo de campo a DATE y entonces solo te preocupas de insertar bien la fecha al registro, aun que con la funcion NOW() te resuelves el problema
INSERT INTO `tabla` (id,fecha,contenido) VALUES(null,NOW(),'texto xD');
y listo >.<
luego solo pones un formulario donde selecciona un rango de fechas
Citarselecciona fecha de inicio: Dia[___]Mes:[______]Año:[_____]
Fecha de termino: Dia[___]Mes:[______]Año:[_____]
y luego el query es mas facil xD
SELECT * FROM `noticias` WHERE fecha BETWEEN '$anyio-$mes-$dia' AND '$anyo2-$mes2-$dia2' LIMIT X,x
Gracias, aunque necesitaria la fecha completa para la comparacion... como podria hacer que por ejemplo comparara tambien si el usuario solo introduce el el año o el año y mes?
EDITO: ya esta arreglado, pues me di cuenta de que si no quieres dar un mes o dia concreto pones el minimo en 0 y el maximo en 12 o 31 respectivamente y listo...
Saludos.
PD: me he fijado que google pilla los temas de este foro a los pocos minutos :o
xD
Deja por default unos valores en los campos del tipo "select" del formulario
podrias hacer alguna funcion para que tome las fechas que ya tienes y las convierta en fecha "real/normal" a la base de datos, para esto mira este link
http://www.programacionweb.net/articulos/articulo/?num=112
:)
Buenas,
disculpenme por ser tan pesado pero... que version de mysql es requerida para usar BETWEEN? es que tengo instalada la 4 y me aparece el siguiente error:
CitarYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...
Saludos.
si lo soporta, puede ser un error de sintaxis, reviza bien el scrip
Yo he utilizado el SQL que ha posteado Azielito, solo le cambie el LIMIT a 5 :-X
Saludos y gracias.
PD: si no es molestia... como seria para aniadirle otro condicional a WHERE? es decir, poner algo como "AND categoria=$cat" ya que con lo de BETWEEN me confundo un poco.
A lo mejor no acabe de comprender tu peticion, o a lo mejor esto no te sirva, pero ya que quieres algo para semi-sustituir between puedes usar algo como;
select * from tabla where fecha >= '$año-$mes-$dia' and fecha <='$anio2-$mes2-$dia2' limit x ;
Recuerden que limit x no es una clausula SQL sino de Mysql, en SQL es top x..
digase por ejemplo : select top 10 max(notas) from alumnos ; mientras en Mysql lo hariamos ; select max(notas) from alumnos limit 10;
:)
Esto ya es muy raro... me sigue tirando el error:
CitarWarning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''noticias' WHERE fecha >= '2006-01-01' and fecha <='2007-12-31' LIMIT 5' ...
Que puede ser? uso el mismo codigo aqui publicado, no se me ocurre que mas...
Saludos.
Algo estas poniendo mal en el query, estas haciendo algo parecido a esto??
select * from ''noticias' WHERE fecha >= '2006-01-01' and fecha <='2007-12-31' LIMIT 5' ;
porque si es asi, ten pendiente que "noticias' no lleva comillas ni simples ni dobles, corrigeme sino lo tienes asi, pero si pusiste comillas si dara error, ya que el query deberia ser;
select * from noticias where fecha >= '2006-01-01' and fecha <='2007-12-31' LIMIT 5' ;
Muchas gracias! ;D
Sinceramente pido disculpas... ha sido fallo mio, confundi los ` por la comilla ' del ejemplo y por eso el lio...
Gracias de nuevo ;D
see =)
Mira, si estas en PHP (que spongo que si) y en mysql (que por el mensage de error casi aseguro que si xD)
ponele un "or die" al final
$sql = "SELECT * FROM `noticias` WHERE `fecha` BETWEEN '$fecha1' AND '$fecha2'";
mysql_query($sql,$link) or die(mysql_error());
asi te dara mejor el error en caso de que te equivoques en nombre de campos, en comillas no serradas y asi =)