2015-10-04 12 views
6

Tôi đã viết mã bên dưới, nhưng dường như chỉ chèn ngày hiện tại chứ không phải ngày hiện tại. Bất cứ ai cũng biết làm thế nào để làm điều đó?Trong Oracle SQL: Làm thế nào để bạn chèn ngày + giờ hiện tại vào một bảng?

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

Làm thế nào để bạn biết rằng nó chỉ chèn ngày hiện tại? Bạn đã thử nó bằng cách nhìn vào bảng thô hoặc bạn đã thử xem nó bằng cách sử dụng một truy vấn? – brenners1302

+0

yeah nó lưu trữ 00:00 như thời gian; tôi xác nhận bằng cách nhìn vào bàn. muốn lưu trữ ngày hiện tại và thời gian hiện tại – Tikkaty

+0

Đầu mối: Trong Oracle, Ngày hiện tại + Thời gian = Sysdate. 'chọn sysdate từ kép sẽ tạo ra 2015-10-05 09: 24: 40'. – RubahMalam

Trả lời

8

Nó dường như chỉ vì đó là những gì nó được in ra. Nhưng thực ra, bạn không nên viết logic theo cách này. Điều này tương đương:

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

Có vẻ ngớ ngẩn để chuyển đổi ngày hệ thống thành chuỗi chỉ để chuyển đổi ngày hệ thống thành ngày.

Nếu bạn muốn xem ngày đầy đủ, sau đó bạn có thể làm:

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

nhờ @gordon. bạn đang nói sysdate chèn nên lưu trữ ngày hiện tại và thời gian hiện tại bằng cách sử dụng phương pháp của bạn? – Tikkaty

+0

@Tikkaty. . . Có, 'sysdate' có thành phần thời gian. –

-3

Bạn có thể thử với bên dưới truy vấn:

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

Để xem kết quả của nó:

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

nó không có ý nghĩa để chuyển đổi sysdate thành một chuỗi và sau đó quay trở lại một ngày – miracle173

Các vấn đề liên quan