Foros del Web » Programando para Internet » PHP »

Uso de fechas con mysql y php

Estas en el tema de Uso de fechas con mysql y php en el foro de PHP en Foros del Web. hola a todos, estoy absolutamente perdida con el tema de las fechas. He buscado en el foro, en google...pero no hay ni un tutorial sobre ...
  #1 (permalink)  
Antiguo 19/05/2005, 11:38
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 19 años, 3 meses
Puntos: 1
Uso de fechas con mysql y php

hola a todos,

estoy absolutamente perdida con el tema de las fechas. He buscado en el foro, en google...pero no hay ni un tutorial sobre manejo de fechas para tontos.
Lo único que necesito es saber como insertar una fecha en una base de datos mysql, en concreto la fecha de ese mismo instante en el que inserto algo en una tabla, para poder controlar la fecha de inserción de ese registro. Luego quiero poder mostrar esa fecha en pantalla en formato DD/MM/AA, y posteriormente poder hacer una consulta y buscar registros de mi tabla entre dos fechas dadas.
Sólo pido que alguien me oriente, no una aplicación hecha..., donde buscar, dónde aprender...porque parece que hay mi maneras de hacerlo pero yo no encuentro nada que sea práctico...que tenga ejemplos sencillos que me orienten.
Ahora uso date() para insertar la fecha desde mi form así:

<input name="fecha_entrada" type="text" id="fecha_entrada" value="<?php echo date("d/m/Y"); ?>" maxlength="200">

y lo ingreso en un campo varchar de la tabla mysql, porque si lo ingreso en un campo date el formato parece que es AA/MM/DD y no me vale.
De todas maneras sigo sin saber como comparar las fechas porque al ingresarlas en un campo de texto no me sirve de nada BETWEEN ni otros métodos, ya que lógicamente no compara fechas.

Un poquito de ayuda para poder realizar mi aplicación y prometo escribir un buen tutorial para ineptos como yo en cuanto termine.

Un saludo
  #2 (permalink)  
Antiguo 19/05/2005, 11:50
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 1 mes
Puntos: 0
Yo lo hago así:

Qué tal, espero que te sirva el siguiente fragmento de código, que es para guardar la fecha y la hora de cuando un usuario inicia sesión, pero tú lo puedes adaptar para lo que tú quieras:

Código:
  $Fecha=getdate();
  $FechaTxt=$Fecha["year"]."/".$Fecha["mon"]."/".$Fecha["mday"];
  $HoraTxt=$Fecha["hours"].":".$Fecha["minutes"].":".$Fecha ["seconds"];
//lógica para insertar registro en la tabla
  $insertSQL = sprintf("INSERT INTO regelim (ClaveDRE, EmailRE, FechaRE, HoraRE) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['hiddenField'], "text"),
                       GetSQLValueString($_POST['EmailDelTxt'], "text"),
                       GetSQLValueString($FechaTxt, "date"),
                       GetSQLValueString($HoraTxt, "date"));

  mysql_select_db($database_connBDBV, $connBDBV);
  $Result1 = mysql_query($insertSQL, $connBDBV) or die(mysql_error());
La función GetSQLValueString lo único que hace es poner formato a los datos para que puedan ser tomados en cuenta como una consulta para MySQL válida, no la pongo porque no creo que tenga importancia, pero si necesitas saber qué hace, me la pides y la pongo.

Para hacer una consulta entre fechas en MySQL lo haces así:

Código:
$consulta="select * from tabla where fecha between '2005/01/01' and '2005/05/05'";
$rsConsulta=mysql_query($consulta, $Conexión);
como ves, aquí las fechas están en formato yyyy/mm/dd, para mostrar los datos en formato dd/mm/yyyy o como quieras, lo único que tienes que hacer son operaciones de formato a la cadena resultante, eso no es muy difícil, pero si tienes más dudas, preguntas ok?
  #3 (permalink)  
Antiguo 19/05/2005, 11:56
 
Fecha de Ingreso: noviembre-2003
Ubicación: Veracruz
Mensajes: 131
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola Molxa...
Requieres saber todo?? o que necesitas en especifico, porque para insertar la fecha actual en tu base de datos necesitas el campo date y cuando hagas el insert solo debes poner now() y con eso se guarda la fecha actual en tu registro
Ejemplo:
Código PHP:
$sql="insert into registro(id, nombre, fecha) values('1', 'Fred Flinstone', now())"
para poder obtener la fecha pues solo jala el campo..
Código PHP:
$sql="slect * from registro where id='1'";
$res=mysql_query($sql$connection) or die(mysql_error());
$row=mysql_fetch_assoc($res);
$fecha=explode('-'$row['fecha']); 
la variable fecha es un arreglo y ya puedes mostrar la fecha como tu requieras...solo deberas acomodar las posiciones de arreglo para dd/mm/yyyy ($fecha[2]-$fecha[1]-$fecha[0])

no se si me explico...que mas requieres..que te pueda ayudar
Saludos
  #4 (permalink)  
Antiguo 19/05/2005, 12:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por Molxa
Lo único que necesito es saber como insertar una fecha en una base de datos mysql, en concreto la fecha de ese mismo instante en el que inserto algo en una tabla
Función NOW() si tu campo es DATETIME; función CURDATE() si tu campo es DATE... ambas de SQL.

Cita:
Luego quiero poder mostrar esa fecha en pantalla en formato DD/MM/AA
Función DATEFORMAT() igual de SQL.

Cita:
posteriormente poder hacer una consulta y buscar registros de mi tabla entre dos fechas dadas
BETWEEN valor1 AND valor2 .. igual.. SQL.

Verás que es mejor manejar todos estos temas con lenguaje propio de SQL,.. te dejo esto:
http://www.forosdelweb.com/f21/busquedas-intervalos-tiempo-293943/ // de una busqueda
http://www.forosdelweb.com/f21/year-month-ok-por-que-day-no-272475/ // por el final
http://www.mysql-hispano.org/page.php?id=31&pag=6 // exelente!!!

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 19/05/2005, 12:26
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 19 años, 3 meses
Puntos: 1
Hola!!!!!!!!
Jam1138...muchas gracias por tu respuesta...por lo que dices creo que el único que hay que hacer es insertar las fechas en el formato correcto de Mysql, osea, AAAA/MM/DD, en mi caso con now(), ya que mi campo es tipo date, y para mostrarlas en pantalla, jugar con explodes y demás para partir en trozos la fecha y colocarla de manera DD/MM/AAAA que es como a mi me gusta.
Claro, luego sólo tengo que comparar las fechas con BETWEEN y todo correcto.
[email protected] ejemplo para insertar y mostrar las fechas es justo cómo yo quería.
Muchas gracias por vuestra ayuda...voy a probarlo todo y en cuanto esté hecha la aplicación de comparación de fechas la publico en el foro bien explicadita para que nadie se pierda.
Un abrazo a todos!!!!!!!!!!!
  #6 (permalink)  
Antiguo 19/05/2005, 12:36
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 19 años, 3 meses
Puntos: 1
Gabriel0702...muchas gracias a ti tambien por tu respuesta...pero me gustaría preguntarte que es eso de la función GetSQLValueString...nunca la he usado.
muchas gracias de nuevo
  #7 (permalink)  
Antiguo 19/05/2005, 12:39
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 1 mes
Puntos: 0
La función no es de PHP, es una función que implementa Dreamweaver en uno de sus comportamientos, es sólo para darle formato a los datos que serán tomados en cuenta para una consulta o un comando SQL, te la paso para que la cheques:

Código:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
  #8 (permalink)  
Antiguo 19/05/2005, 23:13
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por Molxa
(...) insertar las fechas en el formato correcto de Mysql, osea, AAAA/MM/DD, en mi caso con now(), ya que mi campo es tipo date, y para mostrarlas en pantalla, jugar con explodes y demás para partir en trozos la fecha y colocarla de manera DD/MM/AAAA
... te invito a releer mi respuesta y los enlaces que te dejé .
1) Si tu campo es DATE usa CURDATE()
2) Aunque un sistema de explode's te puede servir, esto representa un gasto de recursos... SQL tiene funciones específicas que trabajan de mejor manera y por lo tanto es mejor implementarlas... usa una simple función DATEFORMAT() (la mencioné) y listo...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.