como hacer una consulta (año,mes,dia)en un campo datetime

Iniciado por RedZer, 7 Diciembre 2010, 22:53 PM

0 Miembros y 1 Visitante están viendo este tema.

RedZer

hola de nuevo camaradas tengo una duda  quiero hacer una consulta dependiendo de la fecha que se digite  pero el campo esta con propiedad datetime es obio que si se digita una fecha comun por ejemplo 2010-12-08 jamas me arojara resultado por que en mi tabla esta asi 2010-12-01 08:30:00 por que el campo tiene date time bueno ustedes me diran cambia el tipo de campo a date y evitate dolores de cabeza :rolleyes: el problema es que esa tabla donde se encuentra el campo de tipo date time lo ocupa una agenda prediseñada y si le muevo a date no me guardaria la hora etc etc. entonces mi pregunta es como puedo hacer una consulta a esa tabla omitiendo la hora y sus minutos y que nada mas me quede la pura fecha
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

Shell Root

#1
Pues, entonces concatena la hora al seleccionar la fecha, es decir,
Código (php) [Seleccionar]
$sDate = "2010-12-08";
$sNewDate = "2010-12-08"."00:00:00";


Quizás, puede que el componente que usas se pueda personalizar a vuestro gusto. Tendrías que consultar.

Edit: Por ejemplo, :http://es.efreedom.com/Question/1-1216564/Mejor-metodo-de-entrada-y-validar-datetime-personalizado-en-forma-PHP
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

RedZer

por ejemplo si ago lo que tu dices osea esto
$sDate = "2010-12-08";
$sNewDate = "2010-12-08"."00:00:00"

ok concateno la fecha con la hora que seria todo en cero el problema vendria cuando yo condiciono con where no cres por que yo ago la busqueda entre rangos entonces la consulta que estoy utilizando es esta
Código (php) [Seleccionar]

conectar();
$reporte=mysql_query("select * FROM reporte  WHERE DATE_FORMAT(fecha,'%Y-%m-%d') BETWEEN '$ini' AND '$fin' and asistio='1' ");
desconectar();

entonces me IMAGINO quiza toy mal que cuando haga una consulta por ejemplo un rango fecha de inicio "2010-12-08"."00:00:00" y fecha final "2010-12-10"."00:00:00" no me arojara nada ya que en la tabla no hay ni un campo que tenga este tipo de hora oswa ceros "00:00:00" cierto??? o estoy mal
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

bomba1990

si deberia arrojar algo, porque el no busca por la hora si no por las fechas.

lo que veo algo extraño es lo dle between pero pruebalo a ver si te funciona.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

Graphixx

#4
echale un vistazo a javascript y depronto logras darle mazo a eso...


//archivo: functions.php
<?php
function js2PhpTime($jsdate){
  if(
preg_match('@(\d+)/(\d+)/(\d+)\s+(\d+):(\d+)@'$jsdate$matches)==1){
    
$ret mktime($matches[4], $matches[5], 0$matches[1], $matches[2], $matches[3]);
    
//echo $matches[4] ."-". $matches[5] ."-". 0  ."-". $matches[1] ."-". $matches[2] ."-". $matches[3];
  
}else if(preg_match('@(\d+)/(\d+)/(\d+)@'$jsdate$matches)==1){
    
$ret mktime(000$matches[1], $matches[2], $matches[3]);
    
//echo 0 ."-". 0 ."-". 0 ."-". $matches[1] ."-". $matches[2] ."-". $matches[3];
  
}
  return 
$ret;
}

function 
php2JsTime($phpDate){
    
//echo $phpDate;
    //return "/Date(" . $phpDate*1000 . ")/";
    
return date("m/d/Y H:i"$phpDate);
}

function 
php2MySqlTime($phpDate){
    return 
date("Y-m-d H:i:s"$phpDate);
}

function 
mySql2PhpTime($sqlDate){
    
$arr date_parse($sqlDate);
    return 
mktime($arr["hour"],$arr["minute"],$arr["second"],$arr["month"],$arr["day"],$arr["year"]);

}
?>




//codigo dentro del archivo: wdcalendar/edit.php
                 $sarr = explode(" ", php2JsTime(mySql2PhpTime($event->StartTime)));
                 $earr = explode(" ", php2JsTime(mySql2PhpTime($event->EndTime)));

//para mostrar solo fecha
<?php echo isset($event)?$sarr[0]:""?>
<?php echo isset($event)?$earr[0]:""?>

//para mostrar solo la hora
<?php echo isset($event)?$sarr[1]:""?>
<?php echo isset($event)?$earr[1]:""?>


El codigo lo tome de esta libreria:
http://www.web-delicious.com/jquery-plugins/

especificamente del wdcalendar, esta dentro de la carpeta wdcalendar, archivo edit
http://www.web-delicious.com/jquery-plugins-demo/wdCalendar/sample.php
http://www.web-delicious.com/jquery-plugins-demo/wdCalendar.zip

como ellos en su web deshabilitaron la vista en detalle del calendario, te hice unas capturas:
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

giorgio83

Hola, amigos, estoy buscando ayuda dada la poca documentacion que trae wdCalendar, alguno de ustedes podria ayudarme a conseguir mis propósitos?
Lo que quisiera hacer es por ejemplo, acotar el horario que muestra el calendario para ajustar el horario que se muestra en el calendario al horario laboral de trabajo, es decir si mi horario es de 8 a 20 horas, no me sirve de nada mostrar todas las horas desde las 00 hasta las 24 ya que no voy a poner eventos en esas horas, he encontrado como hacer que la barra vertical solo muestre las horas de 8 a 20, pero al hacer esto, los eventos no cogen la hora bien, es decir si tengo un evento a las 10 me lo esta mostrando en el tramo de las 16 por ejemplo, y si creo un evento nuevo pinchando por ejemplo en el tramo de las 12 realmente me lo crea en las 18 y cosas asi, supongo que es porque tengo que modificar algo mas, pero no encuentro él qué. Me pueden ayudar con este cambio? Gracias de antemano.

Por otra parte otro de los cambios que quisiera hacerle al calendario seria el de poder bloquear ciertos dias o ciertos rangos de fechas en los que aunque hagan click en esos dias no te deje insertar eventos en esos dias ya que están bloqueados. Esto si que no tengo ni idea de por donde empezar.

Un saludo y gracias de antemano.