2012-11-06 33 views
10

Trong postgres tôi có một bảng với cột ngày. Bây giờ postgres cho phép tôi viết ngày theo định dạng Y-m-d. Nhưng tôi cần ngày ở định dạng d/m/Y. Làm thế nào để thay đổi nó?Làm thế nào để thay đổi kiểu dữ liệu trong PostgreSQL?

Khi tôi làm:

show datestyle; 

tôi nhận được:

"ISO, DMY" 

Và đầu vào ngày trong bảng ở định dạng 13/02/2009

này Nhưng khi tôi đóng và bàn mở một lần nữa tôi thấy 2009-02-13 này . JDBC cũng cho tôi ngày tháng theo định dạng này. Tôi đang làm gì sai?

+0

http://www.google.com.au/search?q=postgresql+format+date –

+1

Tôi khuyên bạn nên nói chuyện với bạn cơ sở dữ liệu sử dụng định dạng ISO 8601 và để lại vấn đề về định dạng cho một lớp khác. –

+0

@muistooshort Tuyệt đối. Trước khi chỉnh sửa câu hỏi này dường như là một phiên bản bị cắt xén của "làm thế nào để sử dụng to_char để định dạng một ngày" ... nhưng nếu nó nói về ngày I/O, thì tuyệt đối, dính vào ngày ISO tốt đẹp ngày tháng và sử dụng ' to_char' và 'to_timestamp' nơi các định dạng khác được yêu cầu để nói chuyện với khách hàng. –

Trả lời

7

yyyy-mm-dd là định dạng khuyến khích cho ngày lĩnh vực, định dạng ISO 8601 của nó.

Bạn có thể thay đổi định dạng trong tệp postgresql.conf.

Các document bang

Các phong cách ngày/giờ có thể được lựa chọn bởi người sử dụng bằng cách sử dụng SET lệnh datestyle, tham số DateStyle trong file cấu hình postgresql.conf , hoặc các biến môi trường PGDATESTYLE trên máy chủ hoặc ứng dụng khách. Hàm định dạng to_char là cũng có sẵn như là một cách linh hoạt hơn để định dạng đầu ra ngày/giờ.

Hy vọng điều này sẽ hữu ích!

+1

Đặt kiểu dữ liệu (sql, MDY); tôi thử điều này nhưng không hoạt động. –

+0

Bạn đã thử và sửa đổi biến môi trường 'PGDATESTYLE' chưa? –

+0

Trong 'postgresql.conf' tôi thay đổi kiểu thành' datestyle = 'sql, dmy'' và không có gì heppens. –

4

Sử dụng các chức năng to_char với ngày của bạn như sau:

select to_char(date_column1, 'Mon/DD/YYYY'); 
+0

Okey hoạt động của nó. Nhưng tôi có một số lượng lớn các cột trong lựa chọn của tôi và bây giờ tôi không thể sử dụng * để chọn tất cả các cột. Có thể thay đổi kiểu dữ liệu trong postgres không có trong truy vấn? –

+0

@KliverMax không, postgres lưu trữ ngày như hiện tại, nhưng nó được định dạng khi truy xuất. – hd1

2

Nếu có thể, không sử dụng DATESTYLE. Nó sẽ ảnh hưởng đến tất cả mã trong phiên của bạn, bao gồm những thứ như quy trình được lưu trữ mà có thể không mong đợi và có thể không đặt giá trị rõ ràng DATESTYLE trong định nghĩa của chúng.

Nếu có thể, hãy sử dụng to_char cho ngày đầu ra và to_timestamp để nhập ngày bất cứ khi nào bạn cần sử dụng bất kỳ định dạng ngày nào có thể mơ hồ, như D/M/Y. Sử dụng ISO ngày tháng còn lại của thời gian.

1

bạn cũng có thể sử dụng lệnh

set datestyle to [your new datestyle]; 

trong giao diện điều khiển của PostgreSQL.

+0

. thay đổi phiên. –

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