2015-10-04 10 views
6

Ho scritto sotto il codice, ma sembra solo inserire la data corrente e non l'ora corrente. Qualcuno sa come farlo?In Oracle SQL: come si inserisce la data e l'ora corrente in una tabella?

insert into errortable 
(dateupdated,table1id) 
values 
(TO_DATE(sysdate, 'dd/mm/yyyy hh24:mi:ss'),1083); 
+0

Come fai a sapere che sta inserendo solo la data corrente? Hai provato guardando la tabella non elaborata o hai provato a visualizzarla utilizzando una query? – brenners1302

+0

sì memorizza 00:00 come ora; ho confermato guardando nella tabella. desidera memorizzare la data corrente e l'ora corrente – Tikkaty

+0

Indizio: In Oracle, Data corrente + Ora = Sysdate. 'select sysdate from dual produrrebbe 2015-10-05 09: 24: 40'. – RubahMalam

risposta

8

Sembra solo perché è quello che sta stampando. Ma in realtà, non dovresti scrivere la logica in questo modo. È equivalente:

insert into errortable (dateupdated, table1id) 
    values (sysdate, 1083); 

Sembra sciocco convertire la data di sistema in una stringa solo per riconvertirla in data.

Se si desidera visualizzare la data completa, allora si può fare:

select TO_CHAR(dateupdated, 'YYYY-MM-DD HH24:MI:SS'), table1id 
from errortable; 
+0

grazie a @gordon. stai dicendo che l'inserimento di sysdate dovrebbe memorizzare la data corrente e l'ora corrente usando il tuo metodo? – Tikkaty

+0

@Tikkaty. . . Sì, 'sysdate' ha un componente orario. –

-3

si può provare con sottostante query:

INSERT INTO errortable (dateupdated,table1id) 
VALUES (to_date(to_char(sysdate,'dd/mon/yyyy hh24:mi:ss'), 'dd/mm/yyyy hh24:mi:ss'),1083); 

Per visualizzare il risultato di essa:

SELECT to_char(hire_dateupdated, 'dd/mm/yyyy hh24:mi:ss') 
FROM errortable 
    WHERE table1id = 1083; 
+2

non ha senso convertire sysdate in una stringa e poi tornare ad una data – miracle173

Problemi correlati