2010-02-18 35 views
5

tôi cần phải chèn một định dạng ngày từ một nguồn bên ngoài trong đó bao gồm mã ba lá thư cho múi giờ, nhưng mặt nạ TZD định dạng dường như không làm việc ...Mặt nạ định dạng ngày tháng Oracle cho múi giờ là gì?

insert into blah 
    values (to_date('Thu, 18 Feb 2010 08:37:00 EST','Dy, DD Mon YYYY HH24:MI:SS TZD')); 

ORA-01821: date format not recognized 

Nếu tôi loại bỏ các " TZD "...

insert into blah 
    values (to_date('Thu, 18 Feb 2010 08:37:00','Dy, DD Mon YYYY HH24:MI:SS')); 

1 row created. 

Mặt nạ thích hợp cho tuyên bố chèn như vậy trong Oracle là gì?

desc blah 
Name      Null? Type 
----------------------------------------- -------- ---------------------------- 
D       DATE 

Chỉnh sửa: Tôi đã thay đổi cột bảng từ loại DATE thành loại TIMESTAMP và gặp lỗi tương tự.

Trả lời

6

Cột ngày không có múi giờ làm tùy chọn. Bạn sẽ phải tạo cột dưới dạng kiểu dữ liệu TIMESTAMP WITH TIME ZONE hoặc TIMESTAMP WITH LOCAL TIME ZONE và bên cạnh đó, chức năng TO_DATE không hiểu được mặt nạ định dạng THỜI GIAN mà bạn đang áp dụng.

SQL> CREATE TABLE T 
    2 (DT DATE, 
    3 TS TIMESTAMP, 
    4 TSTZ TIMESTAMP WITH TIME ZONE, 
    5 TSLTZ TIMESTAMP WITH LOCAL TIME ZONE); 

Table created. 

SQL> INSERT INTO T (TSLTZ) VALUES 
    2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD')) 
    3/

1 row created. 

SQL> INSERT INTO T (TSTZ) VALUES 
    2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD')) 
    3/

1 row created. 
0

Nếu múi giờ không liên quan đến bạn, chỉ cần tách nó khỏi chuỗi bằng hàm SUBSTR và chèn như trong ví dụ thứ hai của bạn.

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