2011-12-03 27 views

Trả lời

26

Bạn có thể chuyển đổi một chuỗi thành một DATE sử dụng chức năng TO_DATE, sau đó định dạng lại ngày như một chuỗi khác sử dụng TO_CHAR, ví dụ:

SELECT TO_CHAR(
     TO_DATE('15/August/2009,4:30 PM' 
       ,'DD/Month/YYYY,HH:MI AM') 
     ,'DD-MM-YYYY') 
FROM DUAL; 

15-08-2009 

Ví dụ, nếu tên bảng của bạn là MyTable và varchar2 cột là MYDATESTRING:

SELECT TO_CHAR(
     TO_DATE(MYDATESTRING 
       ,'DD/Month/YYYY,HH:MI AM') 
     ,'DD-MM-YYYY') 
FROM MYTABLE; 
+0

Cảm ơn bạn. Tôi một số cách quản lý để có được kết quả này bằng cách sử dụng chức năng chuỗi con. Nhưng câu trả lời của bạn đơn giản hơn tôi sử dụng. Cảm ơn nhiều. Câu lệnh sql của tôi được chọn to_date (substr (CRM_ACC_DATE_TIME, 1, instr (CRM_ACC_DATE_TIME, ',') - 1), 'dd-mm-yyyy') từ crm_claim_int_details_view; – leelavinodh

+0

Đúng, thường có nhiều cách để làm da mèo :) –

7

Bạn cần sử dụng chức năng TO_DATE.

SELECT TO_DATE('01/01/2004', 'MM/DD/YYYY') FROM DUAL; 
+1

tôi đang nhận được này lỗi msg ORA-01.858: một nhân vật không phải số đã được tìm thấy nơi một số đã được dự kiến ​​ ORA-02.063: trước dòng từ GENCONAIMSUA T 01858. 00000 - "một ký tự không phải là số được tìm thấy ở nơi số được mong đợi" * Nguyên nhân: Dữ liệu đầu vào được chuyển đổi bằng mô hình định dạng ngày là không chính xác. Dữ liệu đầu vào không chứa số có số là theo yêu cầu của mô hình định dạng. * Hành động: Sửa dữ liệu đầu vào hoặc mô hình định dạng ngày để đảm bảo các yếu tố khớp với số và loại. Sau đó thử lại thao tác. – leelavinodh

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