Foros del Web » Programando para Internet » PHP »

Formato para FECHA

Estas en el tema de Formato para FECHA en el foro de PHP en Foros del Web. Hola, En mi DB (MySql) cree un campo DATE, que almacena en el formato 2003-01-01. Sin embargo yo solo quiero visualizar en mi pagina PHP ...
  #1 (permalink)  
Antiguo 02/01/2003, 13:17
Avatar de Rnsto  
Fecha de Ingreso: marzo-2002
Ubicación: Puerto Vallarta, Mexico
Mensajes: 204
Antigüedad: 22 años, 1 mes
Puntos: 0
Formato para FECHA

Hola,

En mi DB (MySql) cree un campo DATE, que almacena en el formato 2003-01-01.

Sin embargo yo solo quiero visualizar en mi pagina PHP "Jan, 2003"

Me pueden explicar y de ser posible anexar un ejemplo, de como puedo hacer esto ????


De antemano GRACIAS
__________________
Saludos
Rnstho Luna
go2mexico.com
  #2 (permalink)  
Antiguo 02/01/2003, 14:05
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 21 años, 4 meses
Puntos: 1
A ver !!

Saludos.

Lo primero es separar los valores que te trae ese campo.

Ej:

$date = "04/30/1973"; // Los delimitadores pueden ser barras, puntos o guiones
list( $mes, $dia, $ano ) = split( '[/.-]', $date );

Donde $date es el campo de tu DB.

Ahora, para saber si estas en Enero, ,Febrero, etc..... lo que se me ocurre y así es como lo hago, es con "elseif"

osea.

if ($mes == 01){
$mes_print = "Enero";
}elseif ($mew == 02){
$mes_print = "Febrbero";
}


y asi hasta llegar a Diciembre.

Suerte
__________________
Aprender Siempre. Lema de Vida

José Molina
  #3 (permalink)  
Antiguo 02/01/2003, 14:08
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 21 años, 3 meses
Puntos: 0
te sugiero que en ves de if else if uses switch()

Saludos
  #4 (permalink)  
Antiguo 02/01/2003, 15:29
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Te sugiero usar strftime(), es mucho más simple.

Puede que primero debas llamar a setlocale() para definir el idioma.
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 02/01/2003, 16:08
 
Fecha de Ingreso: septiembre-2002
Mensajes: 34
Antigüedad: 21 años, 7 meses
Puntos: 0
Yo lo tengo asi:

$date=date("F,y");

hmmm no se, pruebalo aunke no te aseguro nada soy muy muy novato de php, aunke lo sake del manual oficial de php, te copio lo q pone.

date (PHP 3, PHP 4 )

da formato a la fecha/hora local
string date (string format [, int timestamp])
Devuelve una cadena formateada de acuerdo con la cadena de formato dada, utilizando el valor de timestamp dado o la
hora local actual si no hay parámetro.
Se reconocen los siguientes caracteres en la cadena de formato:
• a - "am"o "pm"
• A - "AM"o "PM"
• d - día del mes, dos dígitos con cero a la izquierda; es decir, de "01"a "31"
• D - día de la semana, en texto, con tres letras; por ejemplo, "Fri"
• F - mes, en texto, completo; por ejemplo, "January"
• h - hora, de "01"a "12"
• H - hora, de "00"a "23"
• g - hour, sin ceros, de "1"a "12"
• G - hour, sin ceros; de "0"a "23"
• i - minutos; de "00"a "59"
• j - día del mes sin cero inicial; de "1"a "31"
• l (’L’ minúscula) - día de la semana, en texto, completo; por ejemplo, "Friday"
• L - "1"or "0", según si el año es bisiesto o no
• m - mes; de "01"a "12"
• n - mes sin cero inicial; de "1"a "12"
• M - mes, en texto, 3 letras; por ejemplo, "Jan"
• s - segundos; de "00"a "59"
• S - sufijo ordinal en inglés, en texto, 2 caracteres; por ejemplo, "th", "nd"
• t - número de días del mes dado; de "28"a "31"
• U - segundos desde el valor de ’epoch’
• w - día de la semana, en número, de "0"(domingo) a "6"(sábado)
• Y - año, cuatro cifras; por ejemplo, "1999"
• y - año, dos cifras; por ejemplo, "99"
• z - día del año; de "0"a "365"
• Z - diferencia horaria en segundos (de "-43200"a "43200")
Los caracteres no reconocidos se imprimen tal cual. El formato "Z"siempre devuelve "0"en la función gmdate()()


Bueno no se si era esto lo que querias pero en fin, intentoi ayudar como buenamente puedo...
  #6 (permalink)  
Antiguo 02/01/2003, 16:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Desde la consulta misma puedes obtener ese campo formateado de fecha como desees .. sin mas PHP por medio (con el consiguiente tiempo de proceso que implica) ..

SELECT DATE_FORMAT(fecha,'%b, %Y') AS fecha_formateada FROM tabla

(el AS haces un alias de la funcion aplicada al campo fecha .. ahora tu fecha .. se llamará fecha_formateada .. así lo debes leer en tus $row['fecha_formateada'] o lo q uses ...

mas info . en el manual de Mysql .. :
http://www.mysql.com/doc/en/Date_and...functions.html

Un saludo,
  #7 (permalink)  
Antiguo 03/01/2003, 14:06
Avatar de Rnsto  
Fecha de Ingreso: marzo-2002
Ubicación: Puerto Vallarta, Mexico
Mensajes: 204
Antigüedad: 22 años, 1 mes
Puntos: 0
Cluster,

Soy bastante malo, en esto y halgo estoy haciendo mal, ayudame un poco.

Asi es como lo tengo

$sql = "SELECT * FROM articles WHERE (section='hotels.php') AND (locate2='PV') ORDER BY date";
$result = mysql_query($sql, $link);


Como puedo agregar su SELECT ???

SELECT DATE_FORMAT(date,'%b, %Y') AS fecha_formateada FROM articles ...


Lo intente poniendo

$sql_fecha = "SELECT DATE_FORMAT(date,'%b, %Y') AS fecha_formateada FROM articles";

y despues $result

$result = mysql_query($sql, $sql_fecha, $link);

pero no funciono... GGGRRRRR
__________________
Saludos
Rnstho Luna
go2mexico.com
  #8 (permalink)  
Antiguo 03/01/2003, 19:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas el * en:
$sql = "SELECT * FROM articles WHERE (section='hotels.php') AND (locate2='PV') ORDER BY date";
$result = mysql_query($sql, $link);

estas indicando todos los campos de tu tabla .. OK si necesitas todos ... ¿realmente necesitas todos esos campos en esa consulta? Eso es lo primero que hay q plantearse para optimizar consultas.

Bien, si necesitas ahora aplicar una funcion Mysql a un campo de la tabla en la misma consulta .. tendras que empezar a poner todos los campos que neceistas (igual todos?) .. Pero, en este caso el campo tuyo "date" será usando la funcon DATE_FORMAT() como te indiqué.

Sería algo así:
Código PHP:
$sql "SELECT DATE_FORMAT(date,'%b, %Y') AS fecha_formateada,otrocampo,mascampos,etc FROM articles WHERE (section='hotels.php') AND (locate2='PV') ORDER BY date";
$result mysql_query($sql$link); 
y si haces tu típico:
Código PHP:
While ($registro=mysl_fetch_array($result)){
// el campo date ahora se llama fecha_formateada .. por lo tanto lo obtienes con:
echo $registro['fecha_formateada'];

Un saludo,
  #9 (permalink)  
Antiguo 04/01/2003, 11:46
Avatar de Rnsto  
Fecha de Ingreso: marzo-2002
Ubicación: Puerto Vallarta, Mexico
Mensajes: 204
Antigüedad: 22 años, 1 mes
Puntos: 0
Algo sigue estando mal y de cualquier manera GRACIAS por todo lo que ya me han ayudado......

Le anexo mi script y tal vez podamos encontrar la solucion.... :)

Código PHP:
<?php
$link 
mysql_connect("localhost""root""xxx");
mysql_select_db("articles"$link);
$sql "SELECT DATE_FORMAT(date,'%b, %Y') AS fecha_formateada, section, locate2, title, description, url FROM articles WHERE (section='hotels.php') AND (locate2='PV') ORDER BY date";
//esta es otra opcion que intente YO....
//$sql = "SELECT section, locate2, title, description, url DATE_FORMAT(date,'%b, %Y') AS fecha_formateada FROM articles WHERE (section='hotels.php') AND (locate2='PV')";
$result mysql_query($sql$link);

if (
$row mysql_fetch_array($result)){
   echo 
"<img src='../images/hotels.gif'>\n";
   echo 
"<table width='100%' border='0' cellspacing='8'>\n";
   do {
      echo 
"<tr>\n";
      echo 
"<td valign='top'><div><a href='".$row["url"]."' class='links'>".$row["title"]."</a> <span class='date'>".$row["fecha_formateada"]."</span></div>\n";
      echo 
"<div class='articlestext'>".$row["description"]."</div>\n";     
      echo 
"</td>\n";
      echo 
"</tr>\n";
   } while (
$row mysql_fetch_array($result));
   echo 
"</table>\n";
}
?>
Este es el error:: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/etc/httpd/htdocs/articles/fecha.php on line 7
__________________
Saludos
Rnstho Luna
go2mexico.com
  #10 (permalink)  
Antiguo 04/01/2003, 20:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Nunca habia visto un do ... while para la operación típica de sacar la consulta a un mysql_fetch_xxx() (solo es un comentario igualmente es válida).

Yo siempre cuento el total de registros arrojado por la consulta buscando que sea mayor q 0 para ejecutar un simple bucle while() ...

Lee los comentarios del código .. Si la consulta SQL estubiese mal .. ahí te incluí el código necesario para mostrar sus mensaje de error.

Código PHP:
<?php
$link 
mysql_connect("localhost""root""xxx");
mysql_select_db("articles"$link);
$sql "SELECT DATE_FORMAT(date,'%b, %Y') AS fecha_formateada, section, locate2, title, description, url FROM articles WHERE (section='hotels.php') AND (locate2='PV') ORDER BY date";
//esta es otra opcion que intente YO....
//$sql = "SELECT section, locate2, title, description, url DATE_FORMAT(date,'%b, %Y') AS fecha_formateada FROM articles WHERE (section='hotels.php') AND (locate2='PV')";
$result mysql_query($sql$link) or die("Hay un error en la consulta. Mysq dice: mysql_error()); // con mysql_error() muestro si hay error en SQL de la consulta.

$total_registros=mysql_num_rows($result); // Obtengo el total de registros de la consulta.

if ($total_registros > 0){ // condicional .. si hay mas de 1 registro generado en la consulta .. se muestra la tabla HTML y se ejecuta el mysql_fetch_array).

echo "
<img src='../images/hotels.gif'>n";
echo "
<table width='100%' border='0' cellspacing='8'>n";
   
while ($row = mysql_fetch_array($result)){
      echo "
<tr>n";
      echo "
<td valign='top'><div><a href='".$row["url"]."' class='links'>".$row["title"]."</a> <span class='date'>".$row["fecha_formateada"]."</span></div>n";
      echo "
<div class='articlestext'>".$row["description"]."</div>n";     
      echo "
</td>n";
      echo "
</tr>n";
   }
 echo "
</table>n";

} else { // si no hay registros en la consulta (0) se da este error.
echo "
No hay registros para esta consulta";
}
?>
Un saludo,
  #11 (permalink)  
Antiguo 15/03/2004, 22:57
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
y si en la select necesito un DISTINCT??

Hola..

Yo tambien tengo algunas dudas al respecto con date format.
En mi caso quiero realizar una select para llenar un menu de salto con las fechas de cada registro pero para que no me salgan repetidas uso distinct. ¿ como seria la select en este caso ?

de esta manera no me resulta:

$lugar = 'B';
$sql = "SELECT DISTINCT fecha, DATE_FORMAT(date,'%j,%n, %Y') AS fecha_formateada FROM galeria WHERE lugar ='$lugar' "
$result = mysql_query($sql, $link);

Gracias ..
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:36.