2011-09-24 49 views
28

Tengo problemas para insertar una fila en mi mesa. Aquí está la declaración de inserción y la creación de la tabla. Esto es parte de una asignación uni, por lo tanto, la simplicidad, ¿qué estoy haciendo mal? Estoy usando Oracle SQL Developer versión 3.0.04. 'cómo insertar fecha y hora en Oracle?

El problema que estoy teniendo es que solo está insertando el dd/mon/aa pero no el tiempo. ¿Cómo consigo insertar el tiempo también?

INSERT INTO WORKON (STAFFNO,CAMPAIGNTITLE,DATETIME,HOURS) 
VALUES ('102','Machanic Summer Savings',TO_DATE('22/April/2011 8:30:00AM','DD/MON/YY HH:MI:SSAM'),'3') 
; 

CREATE TABLE WorkOn 
(
    StaffNo  NCHAR(4), 
    CampaignTitle VARCHAR(50), 
    DateTime  DATE, 
    Hours   VARCHAR(2) 
) 
; 

Gracias por la ayuda.

EDITAR: Esto no tiene sentido, entro en un momento en el campo para probar si el tiempo está funcionando y se emite una fecha WTF? Esto es muy raro que no puede usar un campo de fecha y acaba de entrar en el tiempo, me di cuenta de esto dará lugar a problemas de manipulación de los datos, pero esto no está haciendo ningún sentido ...

+0

Comparta la definición de su tabla también - 'DESC WORKON' –

Respuesta

29

Lo está haciendo todo bien utilizando una función to_date y especificando la hora. El tiempo está allí en la base de datos. El problema es que cuando selecciona una columna del tipo de datos DATE de la base de datos, la máscara de formato predeterminada no muestra la hora. Si emite un

alter session set nls_date_format = 'dd/MON/yyyy hh24:mi:ss'

o algo similar que incluye un componente de tiempo, verá que el tiempo con éxito la convirtió en la base de datos.

Saludos,
Rob.

+0

Gracias, solo un último número, establece el formato para todas las columnas con formato de fecha que resulta en tiempo que muestra para las columnas donde solo quiero que se muestre la fecha. ¿Es posible especificarlo para una tabla en particular? – Deep

+1

, entonces deberá especificar la máscara de formato de fecha en su instrucción de selección. Algo así como "seleccione to_char (datetime, 'dd-mm-yyyy hh24: mi: ss') datetime from workon". –

+0

Este comando 'alter session' es un regalo del cielo (soy un completo newb de Oracle). Gracias Rob. –

4

Prueba esto:

.. (to_date('2011/04/22 08:30:00', 'yyyy/mm/dd hh24:mi:ss'));

+0

lo siento hace lo mismo, solo muestra la fecha. – Deep

+0

Disculpa, tuve un error tipográfico, inténtalo de nuevo. – jschorr

+0

hola todavía no funciona, solo inserta la parte de fecha e ignora la hora. Si entro solo un tiempo, simplemente lo convierte en una fecha ... MySQL tiene más sentido que un oráculo para mí ... – Deep

29

Puede utilizar

insert into table_name 
(date_field) 
values 
(TO_DATE('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss')); 

espero que ayude.

Cuestiones relacionadas