Definición de datos y portabilidad a DB2

Soy Susana, Analista de Aplicaciones en entorno de Banca y habitualmente trabajo con DB2.
Para un proyecto interno tengo que utilizar oracle y además a nivel administrador, que no es lo mío, y tengo varios problemas.
No sé cómo indicar en la create de tablas que quiero variables definidas como DATE y TIMESTAMP, o más correctamente, cómo indicarles en qué formato las quiero (en DB2 las date son por defecto aaaa-mm-yy y las timestamo le añade a esto Jh:mm:ss:mmmm, que son los formatos que quiero conseguir).
Además sé que existen diferencias ligeras entre programación orable y db2 y el objetivo final de mi proyecto es ser implantado en un entorno DB2, con lo que me sería de gran utilidad saber estas diferencias.
Espero que puedas ayudarme para no tener que bucear en un montón de manuales.

1 Respuesta

Respuesta
1
La forma de definir un campo DATE en la creación de la tabla, es simple y llanamente --> nombre_campo date.
Oracle guarda siempre en la base de datos los DATE de una forma predefinida que suele ser: dd-mm-yyyy, que se cambia en raras ocasiones. Los formatos se pueden modificar a la hora de sacarlos por pantalla para que el usuario los vea de la manera que sea.
Otra cosa ya es como lo muestres por pantalla. Ej:
CREATE TABLE prueba
(nombre varchar2(20), apellidos varchar2(30), fecha date);
Hasta aquí no hay ningún problema, a no ser que en la base de datos en la que trabajes tenga por defecto cambiado el formato de fecha a nivel global; no suele ser habitual a no ser en empresas inglesas más que nada.
Para mostrar un registro de DATE en el formato que nosotros queramos, lo tendremos que cambiar en la selección de datos, es decir en la select. E.J:
SELECT nombre, apellidos, fecha "dd-mm-yyyy" from prueba;
Le hemos dado un formato de día, mes y año; pero también podríamos hacer que nos muestre la hora por ejemplo: SELECT nombre, apellidos, fecha "dd-mm-yyyy hh24:mi:ss"
from prueba;
También podremos alterar una sesión de sql-plus si estamos trabajando constantemente en un formato diferente que el del servidor de la siguiente forma:
alter session set nls_date_format="dd-mm-yyyy";
Nos devolverá: Session modificada.
Tal como te comento, esto solo codifica nuestra session, lo que quiere decir que cuando la cerremos se perderá ese formato.
Veo que en tu pregunta haces referencia a TIMESTAMP. Eso entiendo que será en Oracle sacar un formato de fecha con horas, minutos y segundos... evidentemente si previamente lo guardamos con esa precisión.
Espero que te sirva de ayuda.
Si tienes alguna otra consulta no dudes en plantearla. Estamos para ayudar.
Un saludo y que salga bien el proyecto.
Pedro.
Gracias por tus aclaraciones sobre el formato date. En mi caso tendré que jugar con el formato de recuperación e inserción de cara a poder llevármelo luego sin problemas a DB2.
Veo que no me dices nada sobre portabilidad entre ambos sistemas, no sé si se te pasó o no es lo tuyo. En cualquier caso, tienes idea de si hay algún otro experto a quién dirigirme que me pueda decir algo al respecto.
Muchas gracias por todo, me has ahorrado tiempo de navegación por manuales buscando referencias a las fechas.
Un saludo.
Susana
Efectivamente, el tema de migraciones de datos de oracle y db2 no es mi fuerte. Pero de todos modos al igual que con bases de datos como sql-server, access, sybase, al tratarse de bases de datos relaccionales, existe una cierta compatibilidad desde el punto de vista del modelado de datos.
No conozco a nadie en todoexpertos que nos pueda ayudar.
Lo siento.
Te deseo suerte.
Pedro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas