Obtener fecha base datos mysql

Recién empiezo en esto espero poder expresarme bien... Estoy migrando un sistema hecho en Power Builder 7 con BD anywhere a PB 9 con BD mysql.
El problema es cuando quiero acceder a la fecha y hora de la base de datos. Con la conexión odbc a anywhere anterior tenia la siguiente función:
DateTime ldt_fechaservidor
SELECT  MAX(getdate())
INTO  :ldt_fechaservidor
FROM   sysobjects;
RETURN ldt_fechaservidor
Ahora en mysql no existe la tabla syobjects ni getdate(). Entonces uso cualquier tabla de mi BD, además de función el curdate(), algo así
DateTime ldt_fechaservidor
SELECT max(CURDATE())
into :ldt_fechaservidor
from security_users
;
RETURN ldt_fechaservidor
Pero no me retorna nada, no se si habrá alguna mejor manera de traer ese dato de la BD o en que me estoy confundiendo
Respuesta
1
El problema más grande que siempre tuve con mysql es el formato de fecha y hora que no siempre lo toma de TU SISTEMA, sino que maneja el suyo propio...
Tu consulta sql esta bien, pruébalas en cualquier analizador de consultas mysql, pero el formato de fecha de powerbuilder lo toma del sistema a diferencia de mysql, solución:
SELECT max(DATE_FORMAT(CURDATE(),'%d-%m-%Y '))
into :ldt_fechaservidor
FROM security_users;
Considerando que es accesible y existe (dentro de tu usuario) la tabla security_users
SELECT max(DATE_FORMAT(CURDATE(),'%d/%m/%Y ')) Para q salga con 10/10/2009
Ahora cuando insertes datos mediante datawindows tendrás los mismos problemas porque mysql exige 2009-10-10, mi solución adelantada es: CONVERTIR LOS DATETIME EN VARCHAR
1. Click derecho en el datawindow
2. Edit source
3. Busca los campos con DATETIME y reemplazarlos con char(22), guardas y listo, ya puedes insertar dd/mm/yyyy en tus datawindows.
Ojo que no podrás usar mascaras y demás (a menos que uses otros trucos), pero te permitirá el insert y update sin problemas.
Existen otras opciones para configurar el servidor mysql para el formato de fechas de nuestro idioma, si tienes tiempo investiga al respecto, pero para que más trabajo...
Saludos.
(Si no te satisface mi respuesta pregunta de nuevo para que otro experto te ayude).
Buena, eso de cambiarlos a char(22) io lo arregle creando un datastore
DateTime ldt_fechaservidor
string error_syntaxfromSQL, error_create
string new_sql, new_syntax
datastore ds_new
ds_new = create datastore
new_sql = 'SELECT distinct now() from gen_unidadnegocio;'
new_syntax = SQLCA.SyntaxFromSQL(new_sql, 'Style(Type=Form)', error_syntaxfromSQL)
IF Len(error_syntaxfromSQL) > 0 THEN
        // Display errors
        messagebox('error sintaxis',error_syntaxfromSQL)
ELSE
        // Generate new DataStore
        ds_new.Create(new_syntax, error_create)
        IF Len(error_create) > 0 THEN
            messagebox('error al crear ds', error_create)
        END IF
END IF
ds_new.SetTransObject(SQLCA)
ds_new.Retrieve()
ldt_fechaservidor = ds_new.getitemdatetime(1,1)
RETURN ldt_fechaservidor
Pero tienes razón me va a dar problemas en todos los dw gracias por el dato

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas