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: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  [mysql] Consultar mediante rango de fechas en una sola sentencias ?
0 Usuarios y 1 Visitante 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)
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


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

Buenas.

En mi sistema manejo datos que requiero consultar de MySQL que esten dentro del dia actual, vaya, que los datos que se consulten sean del mes/a~o actual.

Cada vez que se insertan datos nuevos existe una entrada en la tabla llamada FECHA en donde se guarda directamente la fecha obtenida mediante la funcion time().

Como puedo consultar los datos que concuerden con la fecha actual ?

Como solucion (momentanea) lo que hago es esto:

Código
<?php
# Esta es la tabla (fictisia)
# create table DATOS (
#  TITULO VARCHAR(100) not NULL,
#  MENSAJE TEXTnot NULL,
#  FECHA VARCHAR(100) not NULL
#  );

$link= conectar();
$cons= mysql_query( "select * from DATOS;", $link );
if( mysql_num_rows($cons) )
   {
   $cont=0; # contador
   while( $buf=mysql_fetch_array($cons) )
       {
       # buscamos entrada del mes y a~o actual
       if( !strcmp( date("m/y", time()), date("m/y", $buf["FECHA"]) ) ) # si es el mes/a~o actual
           $cont++;
       }
   }
 
echo 'Se encontraron en este mes <b>'. $cont. '</b> resultados.';
mysql_free_result($cons);
mysql_close($link);
?>


« Última modificación: 10 Marzo 2011, 04:34 por Diabliyo » En línea

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

What da faq!
Porque no lo haces directamente en la consulta del MySQL. Es decir,
Código
SELECT *
 FROM DATOS
WHERE (fecha = 'fecha-actual');


En línea

---
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 #2 en: 10 Marzo 2011, 04:33 »

What da faq!
Porque no lo haces directamente en la consulta del MySQL. Es decir,
Código
SELECT *
 FROM DATOS
WHERE (fecha = 'fecha-actual');

Como ?...

En el scrpt contabilizo las entradas que se hayan echo el MES y A~O actual, como lo haria directo en MySQL ?

Saludos !
En línea

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

Pero es que no entiendo, explicanos con ejemplos reales.
En línea

---
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 #4 en: 10 Marzo 2011, 05:01 »

Pero es que no entiendo, explicanos con ejemplos reales.

Es por demas, lee el ejemplo...
En línea

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

Cual? ahhahaa
En línea

---
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 #6 en: 10 Marzo 2011, 05:11 »

Cual? ahhahaa

Pues el que esta en el primer post :S daaaaaaaa !
En línea

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

Con ejemplos reales, me refiero a los datos que están la base de datos. Y explicando lo que quieres extraer... ¬¬!
En línea

---
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 #8 en: 10 Marzo 2011, 05:25 »

Con ejemplos reales, me refiero a los datos que están la base de datos. Y explicando lo que quieres extraer... ¬¬!

fijate en el script que puse en el primer post, lo que hago es contabilizar las entradas que se publicaron en el MEs y A~O actual, pero es algo pesado cuando ya se tienen MUCHOS DATOS en la bas e:(, vaya, como podria hacerle para directamente en la sentencia MySQL solo consultar los datos que sean del MES y A~O actuales ?

Se puede o no ?

Saludos !
En línea

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

 La siguiente consulta selecciona todos los registros con un valor date_col dentro de los últimos 30 días:
Código
mysql> SELECT something FROM tbl_name
   -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

:http://dev.mysql.com/doc/refman/5.0/es/date-and-time-functions.html
En línea

---
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 #10 en: 10 Marzo 2011, 05:37 »

La siguiente consulta selecciona todos los registros con un valor date_col dentro de los últimos 30 días:
Código
mysql> SELECT something FROM tbl_name
   -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

:http://dev.mysql.com/doc/refman/5.0/es/date-and-time-functions.html

Ya estuve leyendo antes eso, pero me pregunto si funcionara cuando la FECHa se guarda tomando el dato de time() ?... Porque en los ejemplos, las consultas son: year-mont-day... Y el formato de time() es un numero decimal largo !
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 #11 en: 10 Marzo 2011, 05:47 »

Spara comenzar... el campo FECHA debe ser de tipo DATE en vez de varchar, segundo puedes sacar por año, mes o fecha actual utilizando una condicion en where (en el sql)

Código
SELECT * FROM DATOS WHERE FECHA = CURDATE()

y cuando insertas (si solon necesitas fecha, sin hora) puedes usar la misma funcion en sql, o NOW()

si es por mes o año actual?

Código
SELECT * FROM DATOS WHERE YEAR(FECHA) = YEAR(CURDATE())
SELECT * FROM DATOS WHERE YEAR(FECHA) = 2011

funcionarian exactamente igual :p

Código
SELECT * FROM DATOS WHERE MONTH(FECHA) = MONTH(CURDATE())
SELECT * FROM DATOS WHERE MONTH(FECHA) = 3
ELECT * FROM DATOS WHERE MONTHNAME(FECHA) = 'March'

para marzo xD
« Última modificación: 10 Marzo 2011, 05:57 por Nakp » 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 #12 en: 10 Marzo 2011, 05:57 »

Spara comenzar... el campo FECHA debe ser de tipo DATE en vez de varchar, segundo puedes sacar por año, mes o fecha actual utilizando una condicion en where (en el sql)

Código
SELECT * FROM DATOS WHERE FECHA = CURDATE()

y cuando insertas (si solon necesitas fecha, sin hora) puedes usar la misma funcion en sql, o NOW()

si es por mes o año actual?

Código
SELECT * FROM DATOS WHERE YEAR(FECHA) = YEAR(CURDATE())
SELECT * FROM DATOS WHERE YEAR(FECHA) = 2011

funcionarian exactamente igual :p

Código
SELECT * FROM DATOS WHERE MONTH(FECHA) = MONTH(CURDATE())
SELECT * FROM DATOS WHERE MONTH(FECHA) = 3
ELECT * FROM DATOS WHERE MONTH(FECHA) = 'March'

para marzo xD

Bueno vamos por partes para tomar todo bien y hacer la implementacion en mi sistema....

Actualmente cuando guardo un registro, lo hago asi:

Código
mysql_query( "inser into DATOS( ID, MENSAJE, FECHA ) values('123', 'abc', '". time(). "');", $link );

Si cambio el campo FECHA VARCJAR(100) NOT NULL a FECHA DATE, tendria problemas con la forma actual de guardar mis datos ?

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 #13 en: 10 Marzo 2011, 06:06 »

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
En línea

Ojo por ojo, y el mundo acabará ciego.
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 #14 en: 10 Marzo 2011, 07:14 »

La siguiente consulta selecciona todos los registros con un valor date_col dentro de los últimos 30 días:
Código
mysql> SELECT something FROM tbl_name
   -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

:http://dev.mysql.com/doc/refman/5.0/es/date-and-time-functions.html

supon que es febrero :) o diciembre que tiene 31 :O
En línea

Ojo por ojo, y el mundo acabará ciego.
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