Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Pregunta sobre NOW()

Estas en el tema de Pregunta sobre NOW() en el foro de Mysql en Foros del Web. Hola a todos, en mis registros se esta guardando la fecha con la funcion NOW() como sabran el formato en que la guarda es : ...
  #1 (permalink)  
Antiguo 09/09/2009, 09:26
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta sobre NOW()

Hola a todos, en mis registros se esta guardando la fecha con la funcion NOW() como sabran el formato en que la guarda es : 2009-09-09 09:08:59 entonces mi pregunta es.. ¿se puede guardar la fecha con otro formato? osea algo asi: 9/Sep/2009, tal ves se tenga que usar otra funcion, pero solo conosco NOW() alguno de ustedes que esta mas experimentado en esto tiene alguna solucion? gracias.
  #2 (permalink)  
Antiguo 09/09/2009, 09:41
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, 4 meses
Puntos: 2658
Respuesta: Pregunta sobre NOW()

Poderse hacer, se puede. Para ello solamente tendrías que usar una combinación entre el NOW() y el DATE_FORMAT():
Código sql:
Ver original
  1. SELECT DATE_FORMAT(NOW(),'%e/%b/%Y');
La pregunta sería ¿para qué?, ya que esa forma de guardarlo solamente podrías hacerlo en un campo VARCHAR(8) o CHAR(8), con lo que usarías exactamente la misma cantidad de bytes que para un DATETIME, perdiendo la hora.
Además, adolece de al menos un problema: No podrás hacer uso del valor de fecha en un WHERE sin volverlo a recrear como DATE, usando una sintaxis más complicada.

El tema de la representación es un problema de interfases, es decir, de salida de datos y no de almacenamiento. No es práctico ni necesario usar formats que no sean los estandarizados para almacenar fechas. Si lo haces así, tarde o temprano te complicará la redacción de las consultas.

Si el tema es que no necesitas la hora, usa campos DATE y la función CURRENT_DATE().
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/09/2009, 09:45
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Pregunta sobre NOW()

No se puede.
Pero existen funciones para visualizar la fecha en el formato que quieras.

Código mysql:
Ver original
  1. mysql> select date_format(now(),'%d/%M/%Y');
  2. +-------------------------------+
  3. | date_format(now(),'%d/%M/%Y') |
  4. +-------------------------------+
  5. | 09/September/2009             |
  6. +-------------------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql>

Mira las opciones de formato que soporta acá

EDITO: gnzsoloyo... como es posible hacer el cambio de formato? He buscado en repetidas ocasiones esto, y nunca doy con una respuesta.
Mil gracias
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 09/09/2009, 09:48
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Pregunta sobre NOW()

Hola gnzsoloyo, gracias por tu respuesta, si lo necesito por que, al momento de hacer consulta el usuario llena un formulario y le aparece un calendario que al seleccionar su fecha de rango le da la fecha en ese formato (9/Sep/2009) osea va a buscar los registros echos del 5/Sep/2009 al 9/Sep/2009 (por ejemplo) y le va a dar los resultados, pero ese formato no coincide con el formato registrado en la tabla.

es por eso que me interesaba saber como guardar en ese formato, pero tu me dices que en WHERE no voy a poder hacer uso del formato, no se si te entendi bien, osea ¿que no voy a poder hacer consultas a un formato asi? o como fue eso?
  #5 (permalink)  
Antiguo 09/09/2009, 09:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Pregunta sobre NOW()

Para resolver esto, existe una función que te permite entrar la fecha como quieras y el motor dte la convierte al formato de mysql.

Código mysql:
Ver original
  1. mysql> select str_to_date('05/sep/2009','%d/%b/%Y');
  2. +---------------------------------------+
  3. | str_to_date('05/sep/2009','%d/%b/%Y') |
  4. +---------------------------------------+
  5. | 2009-09-05                            |
  6. +---------------------------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql>

http://www.conclase.net/c/mysql/inde...un=STR_TO_DATE
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 09/09/2009, 10:03
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Pregunta sobre NOW()

Hola huesos52, gracias a ti tambien por tus respuestas, solo tengo una duda, en realidad son nuevo con esto de MySQL y no entiendo bien la forma en que lo plateas, sera que me lo pudieras explicar un poco para aprenderlo mejor?

ya vi el enlace del final, pero basicamente no le entiendo, gracias.
  #7 (permalink)  
Antiguo 09/09/2009, 10:09
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Pregunta sobre NOW()

claro tampon.

supongamos tienes una tabla llamada pedido con los campos id_pedido y fecha.

create table pedido(id_pedido integer,fecha datetime);

Desde tu lenguaje de programación, en el campo de texto te viene la fecha en formato 05/sep/2009.

Para insertar esta fecha debes hacerlo con la función str_to_date así:

Código mysql:
Ver original
  1. mysql> create table pedido(id_pedido integer,fecha datetime);
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> insert into pedido values(1,str_to_date('5/sep/2009','%e/%b/%Y'));
  5. Query OK, 1 row affected (0.00 sec)
  6.  
  7. mysql> select *from pedido;
  8. +-----------+---------------------+
  9. | id_pedido | fecha               |
  10. +-----------+---------------------+
  11. |         1 | 2009-09-05 00:00:00 |
  12. +-----------+---------------------+
  13. 1 row in set (0.00 sec)
  14.  
  15. mysql>

de esta forma, la fecha queda almacenada en el formato de mysql con la entrada como la requieres.

Con date_format como te explico en el post anterior, puedes visualizarla como quieras.

Te queda claro?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 09/09/2009, 10:16
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Pregunta sobre NOW()

Si mas o menos, bueno tendre que repasarlo de nuevo y ponerlo en marcha de todas formas gracias por las respuestas.

Saludos!
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 02:43.