2015-10-04 16 views
6

Napisałem poniżej kod, ale wydaje się, że wstawia on aktualną datę, a nie aktualną godzinę. Ktoś wie, jak to zrobić?W Oracle SQL: Jak wstawić bieżącą datę i godzinę do tabeli?

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

Skąd wiesz, że jest to tylko wstawianie bieżącej daty? Czy próbowałeś, patrząc na surową tabelę lub próbowałeś przeglądając go za pomocą zapytania? – brenners1302

+0

tak, zapisuje 00:00 jako czas; Potwierdziłem, patrząc w tabeli. chcesz zapisać aktualną datę i aktualny czas – Tikkaty

+0

Wskazówka: W Oracle, bieżąca data + czas = Sysdate. 'wybierz sysdate z dual, który wytworzy 2015-10-05 09: 24: 40'. – RubahMalam

Odpowiedz

8

Wydaje się tylko dlatego, że właśnie to drukuje. Ale tak naprawdę nie powinieneś pisać logiki w ten sposób. Jest to odpowiednik:

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

Wydaje się głupie przekonwertować datę systemową na ciąg tylko po to, aby przekonwertować go z powrotem na datę.

Jeśli chcesz zobaczyć pełną datę, a następnie można zrobić:

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

dzięki @gordon. czy chcesz powiedzieć, że insert sysdate powinien przechowywać aktualną datę i aktualny czas przy użyciu twojej metody? – Tikkaty

+0

@ Tikkaty. . . Tak, 'sysdate' ma komponent czasu. –

-3

Możesz spróbować z poniżej kwerendy:

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

Aby wyświetlić wynik to:

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

nie ma sensu konwertować sysdate na ciąg, a następnie z powrotem do daty – miracle173

Powiązane problemy