2013-06-12 19 views
8

Chào buổi chiều tất cả,Chuỗi Postgres đến ngày VÍ DỤ 10Apr77 đến 10/04/1977

Tôi khá mới đối với PostgreSQL, vì vậy xin lỗi trước nếu câu hỏi của tôi thấp hơn mức trung bình.

Tôi nhận được một số dữ liệu ở định dạng tệp csv flay và được chèn vào bảng dàn để tôi xem trước dữ liệu. Trên những thứ tôi gặp phải vấn đề là trường dữ liệu được lưu trữ dưới dạng giá trị chuỗi. Ví dụ: 10Apr96 - 01Jan85

Tôi đã viết truy vấn dưới đây để xem liệu có thể phá vỡ chuỗi lên và lặp lại với nhau theo định dạng ngày hay không.

Có cách nào dễ dàng hơn để đạt được những gì tôi đang làm không?

select 
concat(cast(substring(datetext,1,2) as varchar(2)),'/',case 
when cast(substring(datetext,3,3) as varchar(3)) = 'Jan' then '01' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Feb' then '02' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Mar' then '03' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Apr' then '04' 
when cast(substring(datetext,3,3) as varchar(3)) = 'May' then '05' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Jun' then '06' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Jul' then '07' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Aug' then '08' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Sep' then '09' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Oct' then '10' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Nov' then '11' 
when cast(substring(datetext,3,3) as varchar(3)) = 'Dec' then '12' 
end,'/',cast(substring(datetext,6,2) as varchar(2))) as dt 
from tbl_loading_horses_tmp 
+1

Cảm ơn bạn đã hiển thị mã bạn đang sử dụng và một số dữ liệu được áp dụng. Trong tương lai, bạn cũng nên đề cập đến phiên bản PostgreSQL của mình, nhưng cảm ơn bạn đã nỗ lực giải thích rõ ràng, +1. –

Trả lời

10

Bạn có thể sử dụng the to_date() function, trong đó có một chuỗi định dạng như thế nào để giải thích các đầu vào và trả về một giá trị date đó là những gì bạn nên được lưu trữ trong DB của bạn.

 
SELECT to_date('10Apr96', 'DDMonYY'); 
    to_date 
------------ 
1996-04-10 
(1 row) 

Để chuyển đổi chuỗi đó thành định dạng khác khi truy xuất hiển thị, hãy sử dụng hàm to_char() được ghi trên cùng một trang.

+1

Tôi đã thêm một chút giải thích thêm và một liên kết đến tài liệu, nhưng điều này chắc chắn là cách tiếp cận đúng. – IMSoP

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