elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:19  


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  [mysql] Consultar mediante rango de fechas en una sola sentencias ?
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [mysql] Consultar mediante rango de fechas en una sola sentencias ?  (Leído 7,188 veces)
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #15 en: 10 Marzo 2011, 16:14 »

jeje despues de pensar un rato puedes seleccionar todas las fechas del mismo mes y año pasando el año y mes concatenados :P para marzo 2011 seria 201103 por lo tanto la query quedaria mas o menos asi

Código
SELECT * FROM DATOS WHERE EXTRACT(YEAR_MONTH FROM FECHA) = 201103;
 
SELECT * FROM DATOS WHERE YEAR(FECHA) = 2011 AND MONTH(FECHA) = 3;

funcionarina exactamente igual para el mismo mes (del mismo año) :P


En línea

Ojo por ojo, y el mundo acabará ciego.
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #16 en: 10 Marzo 2011, 17:57 »

time() es un timestamp en formato unix... cambia por

Código
mysql_query( "inser into DATOS( ID, MENSAJE, FECHA ) values('123', 'abc', NOW());", $link);
 
//o
 
mysql_query( "inser into DATOS( ID, MENSAJE, FECHA ) values('123', 'abc', CURDATE());", $link);

dependiendo si necesitas el timestamp (fecha y hora) o solo la fecha

Quiero tener en el campo FECHA la disponibilidad de Fecha y Hora, que funcion utilizo ???... NOW() o CURDATE() ?...

Por cierto, la insercion (ya en la realidad) la utilizo mediante una funcion llamada insertar_bdd() pasandole 2 argumentos, el primer argumento es el nombre de la base de datos y el segun argumento es un array donde esta los campos y su valor... Como podria hacer el cambio a la forma de usar NOW() o CURDATE() ?

Asi lo hago ahorita, como lo haria ahora ???

Código
<?php
$trama= array(
    "id"=>"'123'",
    "mensaje"=>"'abc'",
    "fecha"=>"'". time(). "'" );
 
if( !insertar_bdd( "DATOS", $trama ) )
    echo 'Error...';
else     echo 'Exito...';
?>



Aprovecho para hacer otra observacion... Como actualmente todas mis fechas de las tablas que uso, las guardo usando el tiempo de unix ( time() ) y la variable FECHA es un VARCHAR(100) not NULL... Digamos que sustituyo a FECHA DATE not NULL, pero ahora como se guardaran los datos ?? Ya que actualmente cuando muestro una fecha, despues de hacer la consultar y extraer el campo de FECHA (usando mysql_fetch_array()), imprimo los datos asi:

Código
<?php
$cons= consultar......
$buf= mysql_fetch_array($cons);
echo 'Fecha: '. date( "d/m/Y", $buf["FECHA"] );
echo '<br>Horario: '. date( "g:i a", $buf["FECHA"] );
?>

Como seria cuando se cambie a FECHA DATE not NULL ?

Cabe mencionar que quiero preguntar antes de hacer pruebas, ya que mi sistema esta ya algo cargado de datos y no quiero experimentar con este, por seguridad y porque no quiero cometer alguna torpesa y da~ar mis registros :D.

Saludos !


En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #17 en: 10 Marzo 2011, 20:31 »

el problema es que guardas un unix timestamp (el cual.. no es varchar, bastaria con un campo numeric o decimal en la base de datos) dependiendo que necesites guardar, en tu base de datos ese campo deberia ser DATE o DATETIME (fecha o fecha y hora)

time() devuelve fecha Y hora en formato unix... pero si no usaras la hora talvez prefieras usar date("Y-m-d") para guardar solo la fecha (y el campo de tipo DATE en la base de datos)

si necesitas la fecha Y hora deberias usar DATETIME en tu base de datos y date("Y-m-d H:m:s") para insertar el timestamp en la base de datos (todo esto del lado de php, las  funciones comentadas anteriormente CURDATE() y NOW() son de SQL)

en resumen xD tendrias que dejar de usar time() y cambiar la forma en que se guardan las fechas en la base de datos, lo cual es una buena practica tomando en cuenta que el tiempo unix empieza el 1 de enero de 1970 a las 0:00 :) imagina si tu sistema guardara fechas de nacimiento :P mi padre no podria registrarse xD
En línea

Ojo por ojo, y el mundo acabará ciego.
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #18 en: 10 Marzo 2011, 21:36 »

Corrígeme si es necesario....

Entonces seria cambiar el FECHA VARCHAR(100) not NULL, a FECHA DATETIME not NULL.
Despues cambiar el script asi:
Código
<?php
$trama= array(
    "id"=>"'123'",
    "mensaje"=>"'abc'",
    "fecha"=>"'". date( "Y-m-d H:m:s", time()). "'" );
?>

Ya con eso, seria convinar las funciones NOW() y CURDATE() (ambas de SQL) para las busquedas segun los lapsos que deseo !.

Pero respecto ya a la practica de bsuqueda, no importa que quiera buscar en FECHA por ejemplo la fecha: 2011-01-01, asumiendo que el campo tiene el formato Y-m-d H:m:s, el MySQL excluira los valores H:m:s para hacer la busqueda con lo que concuerde con 2011-01-01 ?

Saludos !
« Última modificación: 10 Marzo 2011, 21:38 por Diabliyo » En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #19 en: 10 Marzo 2011, 22:27 »

no es necesario pasar el segundo parametro a date (quita ese time())

despues para buscar por lapsos de tiempo puedes usar esto

y por ultimo, si... si buscas solo con la fecha mysql obvia la hora ;)
En línea

Ojo por ojo, y el mundo acabará ciego.
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #20 en: 10 Marzo 2011, 22:34 »

no es necesario pasar el segundo parametro a date (quita ese time())

Entonces como se pasa la fecha ?
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #21 en: 10 Marzo 2011, 22:53 »

date("Y-m-d H:m:s") devuelve la fecha y hora actual :) el segundo es solo para darle formato a otra hora, seria redundante pasarle time()
En línea

Ojo por ojo, y el mundo acabará ciego.
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: [mysql] Consultar mediante rango de fechas en una sola sentencias ?
« Respuesta #22 en: 10 Marzo 2011, 22:57 »

date("Y-m-d H:m:s") devuelve la fecha y hora actual :) el segundo es solo para darle formato a otra hora, seria redundante pasarle time()

echo, deja hago los cambios y pongo AQUI cualquier otro problema con las fechas, sirve que no se pierde el hilo xD
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda en sentencias mysql
Desarrollo Web
competitivo 3 352 Último mensaje 4 Abril 2005, 00:19
por competitivo
Fechas MySql
PHP
Kizar 6 1,461 Último mensaje 17 Abril 2007, 00:13
por Kizar
[Ayuda] consultar registros entre fechas
Programación Visual Basic
NeoXero 1 406 Último mensaje 16 Mayo 2008, 12:01
por Hans el Topo
Consultar MySQL en servidor WEB desde C# ...
.NET
Xhushito 13 2,715 Último mensaje 4 Agosto 2011, 03:50
por .::IT::.
Error al consultar mediante un DataGridView
.NET
Diana.Net 2 470 Último mensaje 30 Diciembre 2011, 16:01
por Diana.Net
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines