Comunidad de diseño web y desarrollo en internet online

Extraer la fecha por separado

Citar            
MensajeEscrito el 24 Nov 2006 07:36 pm
Hola a todos ..

Cómo hago para extraer de un campo datetime de mysql cada dato por separado?
Lo que quiero es imprimir de una fecha simplemente el dia o el mes, etc....

Tengo la consulta que me convierte la fecha a dd/mm/aaaa hh:mm:ss, que funciona bien

Código :

<?php
$sql = "SELECT idNoticia, titulo, descripcion, noticia, categoria, DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as mifecha FROM noticias ORDER BY fecha DESC";
$result = mysql_query($sql, $link);
$totalregistros=mysql_num_rows($result);
setlocale(LC_ALL,"es_ES@euro","es_ES","esp");
while($row=mysql_fetch_array($result)) {
   echo $row['mifecha'];
}
?>

De esta forma me imprime la fecha en el formato dd/mm/aaaa hh:mm:ss.

Y para lo que quiero he hecho lo siguiente:

Código :

<?php echo strftime("%b", $row['mifecha']) ?>

Pero siempre me imprime "dic" y en la base de datos no hay ninguna fecha de diciembre.

Gracias.. y espero sus valiosas ayudas.

Por Jossephb

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Nov 2006 08:22 pm
Hola:

Haz un echo a la variable sin strftime y mira lo que te arroja.

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 24 Nov 2006 08:51 pm
Pero cuando imprimo

Código :

<?php echo $row['mifecha']) ?>

Me aparece la fecha completa de esta forma por ejemplo 24/11/2006 10:25:30, y lo que busco es imprimir solo el mes o el día por separado. En este caso que me imprimiera Nov o Noviembre ó 11 ó Viernes.

Por Jossephb

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Nov 2006 10:05 pm
Entiendo, aquí tienes la especificación completa de la función strftime

ahora, tu problema es muy sencillo, usa strtotime

Código :

$e = strftime("%B", strtotime($mifecha));


sto ya que la función espera una "marca de tiempo" que en sí es una cadena, pero debes pasarla como un valor time, también podrías necesitar revisar setlocale

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 24 Nov 2006 11:49 pm
Revisa date_format de mysql.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 25 Nov 2006 04:45 pm
Gracias Aoyama ...

Me ha servido lo que me has dicho y he aclarado un poco las dudas con el manejo de las fechas, pero ahora tengo otro problemita que ahí si no se que estoy haciendo mal...

Tengo el setlocale de esta forma y funciona bien:

Código :

setlocale(LC_ALL,"es_ES@euro","es_ES","esp");

Y he hecho lo siguiente:

Código :

$fechaEsp = $row['mifecha'];
$prueba = strftime("dia %d mes %B año %Y --- hora %H:%M:%S", strtotime($fechaEsp));
echo $prueba;

Y me muestra lo siguiente:
dia 11 mes octubre año 2007 --- hora 16:55:21
Sabiendo que si imprimo simplemente:

Código :

echo $fechaEsp

Me sale:
22/11/2006 16:55:21

No entiendo por que muestra la fecha totalmente diferente y la hora bien, eso pasa con los demás registros.
:shock:

Por Jossephb

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Nov 2006 09:31 pm
No le veo caso al strftime, a menos que usarás una versión de MySQL menor a 5.0.25.

Simplemente esto es lo que necesitas(si es que tienes una versión reciente de MySQL):

Código :

SET lc_time_names = 'es_MX';
SELECT DATE_FORMAT(now(), "Dia %d Mes %M Año %Y %h:%i:%s");



Nota, si no tienes la versión reciente de MySQL te aparecerá que lc_time_names no existe. :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 28 Nov 2006 01:04 am
No el problema no es ese, sino que necesito mostrar solo el mes o día de un campo datetime, lo que no entiendo es por que me muestra bien la hora, minutos y segundos imprimiendo %H:%M:%S, que lo he leído de http://ww.php.net/es/strftime.

Pero al momento de imprimir dia, mes año, de esta forma: dia %d mes %B año %Y me imprime una fecha totalmente diferente

Ejemplo:
Dato de la base de datos ya traído con DATE_FORMAT: 22/11/2006 16:55:21

Si imprimo: %d, %B, %Y. Me imprime: 11, octubre, 2007
Lo cual no entiendo, ni se porque muestra eso...
En cambio si imprimiera: %H:%M:%S. Me imprime bien: 16:55:21

Por Jossephb

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 28 Nov 2006 02:36 am
Según yo, te esta por algo tomando, los meses por dias y los dias por meses, en tu SELECT invierte nada mas esos dos y ya. Dime que pasa.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser
Citar            
MensajeEscrito el 28 Nov 2006 04:35 pm
Uyy Dano ¡¡
Mis respetos ... por fin, ese era el problema .... muchisimas gracias.

Por Jossephb

18 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.