Comunidad de diseño web y desarrollo en internet online

Consultar año en una tabla de tipo date

Citar            
MensajeEscrito el 28 Jun 2015 09:58 pm
Quiero obtener los resultados de los registros cuyo año es del 2015 pero la tabla se encuentra realizada de esta forma:

dicho esto el query es el siguiente:

Código PHP :

$query_GetMovies = sprintf("SELECT * FROM z_movie WHERE date_format(release,'%Y') = '$year' ORDER BY id DESC LIMIT 0,20");

Pero me salta el siguiente error:
Warning: sprintf(): Too few arguments in /public_html/zeriez/peliculas.php on line 14
Query was empty

y si le quito el "%" me salta el siguiente error:
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 'release,'Y') = '2015' ORDER BY id DESC LIMIT 0,20' at line 1

Dicho esto como puedo consultar solamente el año para obtener bien los resultados?

Por miguelsirna

315 de clabLevel



Genero:Masculino  

Hacker & Programmer

chrome
Citar            
MensajeEscrito el 29 Jun 2015 12:44 pm
En una sola línea de código tienes unos cuantos errores ¿haz hecho tú este código?.

Sprintf se queja porque has puesto en la cadena un '%Y' y por lo tanto espera que le pases un segundo parámetro para completar ese token. El segundo problema es que el token 'Y' de sprintf() no existe. La lista de tokens válidos son estos: sprintf()

Creo que el que has querido poner es '%d' pues quieres usar un número decimal.

Ahora bien, pasando al código MySQL intentas usar la función date_format() pero esa función no hace lo que me parece que crees que hace.

La función que deberías usar es YEAR() Y como tienes un campo datetime, primero debes extraer la pate fecha del campo con la función date() el código correcto sería:

Código MySQL :

SELECT * FROM z_movie WHERE year(date(`release`)) = '2015' ORDER BY id DESC LIMIT 0,20;


Lo que quieres que varíe es el '2015', entonces usas la función sprintf() de PHP así:

Código PHP :

$query_GetMovies = sprintf("SELECT * FROM z_movie WHERE year(date(`release`)) = '%d' ORDER BY id DESC LIMIT 0,20;", $year);


Saludos.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.