Foros del Web » Programando para Internet » PHP »

Separar DATETIME

Estas en el tema de Separar DATETIME en el foro de PHP en Foros del Web. Buen día y gracias por detenerse a leer este tema, Estoy tratando de separar un campo DATETIME de mi base de datos el cual tiene ...
  #1 (permalink)  
Antiguo 12/07/2011, 10:53
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Separar DATETIME

Buen día y gracias por detenerse a leer este tema,

Estoy tratando de separar un campo DATETIME de mi base de datos el cual tiene este formato: 2011-12-31 24:00:00

lo intento con explode("-", $campo) pero me saldria esto:

Array ( [0] => 2011 [1] => 07 [2] => 12 10:35:27 )

Existe alguna forma de pasarle dos caracteres al explode para que el array me quede de esta forma ?

Array ( [0] => 2011 [1] => 12 [2] => 31 [3] => 24:00:00 )

O debo usar otra función que me ayude a separar ese campo ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 12/07/2011, 10:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Separar DATETIME

Con explode() no hay forma pues solo admite un carácter para separar la cadena.

Pero podrías usar preg_split(), y usar un expresión que permita ambos caracteres como separador.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/07/2011, 10:58
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Separar DATETIME

traela formateada desde la BD

http://dev.mysql.com/doc/refman/5.5/...on_date-format

DATE_FORMAT(date,format)
__________________
aconcaguaestudio.com
  #4 (permalink)  
Antiguo 12/07/2011, 10:58
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Separar DATETIME

Saludos

Haz nuevamente otro explode por espacios y listos!.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 12/07/2011, 11:05
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Separar DATETIME

Cita:
Iniciado por pateketrueke Ver Mensaje
Con explode() no hay forma pues solo admite un carácter para separar la cadena.

Pero podrías usar preg_split(), y usar un expresión que permita ambos caracteres como separador.
Bueno amigo, te juro que intente con preg_split pero la verdad (y pido disculpas) no pude hacer la expresión regular para sacar esos campos, mira como lo que intente:

preg_split("- ", $campo)
preg_split(" -", $campo)
preg_split("\- ", $campo)

pero no me funciono... podrías o podría alguien mostrarme la expresión regular ? no necesito nada mas, solo eso, y pido disculpas por ser tan conchudo.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 12/07/2011, 11:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Separar DATETIME

La expresión debería ser:
Cita:
/[\s-]/
Lo que significaría, un espacio o un guión.

De paso te invito a leer lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 12/07/2011, 11:08
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Separar DATETIME

Cita:
Iniciado por Nano_ Ver Mensaje
Saludos

Haz nuevamente otro explode por espacios y listos!.
Hola amigo gracias por responder, resulta que estoy tratando de hacer un método al cual le paso como parámetro ese campo, pero el inutil del programador que hizo la base de datos coloco unos campos como DATE y otros como DATETIME y lo que intento hacer es mostrar la fecha en formato:

1 de Enero de 2011 para los campos DATE y para los DATETIME 1 de Enero de 2011 a las 24:00:00

Si realizo dos explode no me funcionaria.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 12/07/2011, 11:16
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Separar DATETIME

Cita:
Iniciado por pateketrueke Ver Mensaje
La expresión debería ser:


Lo que significaría, un espacio o un guión.

De paso te invito a leer lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
Muchas gracias amigo, te prometo que el fin de semana con tiempo me sentare a ver y a estudiar tu aporte sobre expresiones regulares... porque la verdad que me han hecho mucha falta

:)
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #9 (permalink)  
Antiguo 12/07/2011, 11:55
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Separar DATETIME

a ver si no llegué tarde... puedes usar la función date para separar la fecha de la hora:
Código PHP:
$dato '2011-07-12 10:35:27';
$fecha date('Y-m-d',strtotime($dato));
$hora date('H:i:s',strtotime($dato)); 
luego ya puedes usar explode, suerte ;)
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #10 (permalink)  
Antiguo 12/07/2011, 12:02
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Separar DATETIME

Cita:
Iniciado por jcxnet Ver Mensaje
a ver si no llegué tarde... puedes usar la función date para separar la fecha de la hora:
Código PHP:
$dato '2011-07-12 10:35:27';
$fecha date('Y-m-d',strtotime($dato));
$hora date('H:i:s',strtotime($dato)); 
luego ya puedes usar explode, suerte ;)
Muchas gracias por el aporte, a la final utilice preg_split asi:

Código PHP:
Ver original
  1. $fecha = preg_split("/[\s-]/", $fechaMysql);
  2.     $ano = $fecha[0];
  3.     $mes = $fecha[1];
  4.     $dia = $fecha[2];
  5.     $hora = $fecha[3];
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #11 (permalink)  
Antiguo 12/07/2011, 12:16
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Separar DATETIME

a mi me parece más elegante lo de jcxnet, aunque insisto en que esas cosas hay q dejarselas al sevidor de BD, que te formatee el dato el .
__________________
aconcaguaestudio.com
  #12 (permalink)  
Antiguo 12/07/2011, 12:23
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Separar DATETIME

Cita:
Iniciado por iviamontes Ver Mensaje
a mi me parece más elegante lo de jcxnet, aunque insisto en que esas cosas hay q dejarselas al sevidor de BD, que te formatee el dato el .
Muchas gracias por tu comentario, pero la verdad intento dejar las sentencias SQL lo mas limpias posible.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #13 (permalink)  
Antiguo 12/07/2011, 12:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Separar DATETIME

Cita:
Muchas gracias por tu comentario, pero la verdad intento dejar las sentencias SQL lo mas limpias posible.
Genial, pero en MySQL hay funciones muy eficientes para devolver el dato ya formateado como lo necesitas. Es mucho más eficiente que lo hagas en el SELECT que tener que hacer todo esto... Aprovéchalas.
En el foro de BDD recomendamos siempre que el formateo de salida se haga en SQL (en este caso con DATE_FORMAT(), como te sugieren en el post #3) y el de entrada (a la base) en PHP.

Y sigue siendo SQL... ¿Por qué crees que las implementaron?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 12/07/2011, 13:39
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Separar DATETIME

uff gnzsoloyo se me adelantó, me subscribo a lo que te explica el...

"pero la verdad intento dejar las sentencias SQL lo mas limpias posible."

usar funciones propias de mysql no ensucian el código para nada
__________________
aconcaguaestudio.com
  #15 (permalink)  
Antiguo 13/07/2011, 02:54
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Separar DATETIME

La mejor forma de optimizar el código es empezar a optimizarlo desde la base y la base de cualquier aplicación web es la BD. Uno se puede ahorrar muchísimas líneas de código php si centra el tiro en el diseño de la BD y luego es capaz de explotar los recursos que ofrece la misma. Y te aseguro que prefiero "ensuciar" las consultas a la BD para que el código php esté "limpio" que al contrario.

Un saludo.
  #16 (permalink)  
Antiguo 13/07/2011, 05:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Separar DATETIME

Cada área tiene cosas en las que es más eficiente. Hay cosas que PHP hace mucho mejor, porque es un lenguaje de programación, en cambio SQL es sólo de consultas. Por otro lado, hay ciertas cosas que la base hace mejor, porque a diferencia de los lenguajes de programación, el DBMS puede hacer la misma tarea, con los mismos datos de dos o más formas diferentes, en diferentes momentos, porque cuenta con diferentes algoritmos ajustan a los resultados anteriores. En otras palabras, trabaja estadísticamente. Por eso es potente para manejar datos, pero no procesos.
Y los procesos son el problema real.
Piénsalo de esta forma: En PHP tienes que hacer un proceso para obtener algo. SI lo haces en la base, se va haciendo al mismo tiempo que se leen los registros.
¿Qué supones que es mejor?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: caracteres, datetime, explode, cadenas
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 15:59.