Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2007
Avatar de flystar
flystar flystar is offline
Miembro
 
Registrado: jul 2006
Posts: 184
Poder: 19
flystar Va por buen camino
Unhappy Duda sobre el tipo de datos DATETIME en MYSQL

Buenos Días:

Solicito auxilio de alguna alma caritativa que pueda darme un poco de luz con esta ignorancia que tengo y la cual procedo a tratar de explicar:

He estudiado cierto tiempo una funcion de MYSQL llamada DATEDIFF()

DATEDIFF() devuelve el número de días entre la fecha de inicio expr y la de final expr2. expr y expr2 son expresiones de tipo date o date-and-time. Sólo las partes correspondientes a la fecha de cada expresión se usan en los cáculos.

Pues bien despues de estudiarla procedí a probarla con un par de campos de una tabla que de una BD que tengo que tiene los siguientes valores:

campo1= 12/07/2007 23:30:12 y campo 2= 12/07/2007 23:30:05

Entonces me puse a experimentar la funcion con este par de datos y haciendo algunos campos para experimentar si ponia un valor primero o despues para probar, entonces me dí cuenta que no funciona correctamente y otra vez lo probe de varias maneras quitandole la fecha y a veces jalaba y a veces no... total que termine preguntandome ¿Que esta pasando?

Ah de repente me fije bien y resulta que los ejemplos de Datediff en la documentacion de MYSQL vienen de manera que la fecha se pone con guiones osea asi:

SELECT DATEDIFF('1997-11-31 23:59:59','1997-12-31');

Pero resulta que en la BD los valores de datetime se guardan asi:

campo1= 11/31/1997 23:59:59

Entonces esa diferencia de que se almacena con '/' para separar
las partes de la fecha hace que ya no jale bien la funcion,
entonces ahi lo que tuve que hacer es crear una rutina para
poder crear una variable con el formato correcto para poderle
applicar la funcion, lo cual me parece innecesario por que
segun yo no deberia ser asi, se deberia almacenar la fecha con
el formato correcto asi como viene en los ejemplos de mysql.

Alguien me podria explicar como le hago para que los valores
de fecha en un campo de tipo datetime se almacenen con el valor
con el formato correcto?

osea asi: valor1= 1997-11-31 23:59:59 pero no asi:
31/11/2007 23:59:59

Muchas Gracias.
__________________

"Los unicos que no se equivocan son aquellos que no intentan hacer algo."
Iván Caballero Cano...
ivanhalen77@gmail.com
Responder Con Cita
  #2  
Antiguo 15-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por flystar
Pero resulta que en la BD los valores de datetime se guardan asi:

campo1= 11/31/1997 23:59:59
¿Y como sabes que es así como se guardan los valores? La pregunta parece rara pero una cosa es la forma en que se almacenan los datos y otra la forma en que se muestran.

MySQL seguramente guarda las fechas internamente como números, similar a como hace Delphi. Pero para especificar fechas mediante texto, MySQL usa el formato aaaa-mm-dd, tal como has visto en los ejemplos.

Ahora bien, en estos momentos hago una prueba accediendo a una tabla MySQL con ZEOS, y- efectivamente -veo las fechas en formato dd/mm/aaaa. Pero esto no quiere decir que así estén amacenadas, simplemente quiere decir que ése es el formato de fecha que tengo establecido en Windows. Si lo cambio, cambia también la presentación.

Si hago un moldeo:

Código SQL [-]
select cast(fecha as char(10)) ...

"desenmascaro" el formato y se muestra tal como lo hace MySQL por defecto, es decir, con aaaa-mm-dd. Y esto es así porque el motor, para hacer el moldeo usa sus propios estándares.

// Saludos
Responder Con Cita
  #3  
Antiguo 16-07-2007
Avatar de flystar
flystar flystar is offline
Miembro
 
Registrado: jul 2006
Posts: 184
Poder: 19
flystar Va por buen camino
Tienes la razón, con ese detalle que me diste lo pude solucionar.

Gracias.
__________________

"Los unicos que no se equivocan son aquellos que no intentan hacer algo."
Iván Caballero Cano...
ivanhalen77@gmail.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
duda sobre base de datos oscarpinog Tablas planas 20 13-08-2007 20:46:33
Duda con ADOTable y tipo datos Variant jhcaboverde Varios 0 12-07-2007 18:00:56
Restar dos campos de Tipo DateTime JuanPa1 SQL 4 19-08-2006 03:03:34
Usar tipo de datos double con mysql..... uper MySQL 2 18-10-2005 21:31:42
Duda sobre tipo de campo en Tabla Paradox Aprendiendo Tablas planas 2 04-02-2005 09:47:52


La franja horaria es GMT +2. Ahora son las 01:33:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi