2012-01-11 22 views
5

Tôi có câu hỏi này kể từ buổi bình minh của sự nghiệp lập trình của tôi. Có thực sự là một định dạng văn hóa trung lập cho datetime trong máy chủ sql sao cho khi tôi gửi chuỗi truy vấn từ phía máy khách đến máy chủ cơ sở dữ liệu chạy máy chủ sql 2008 có định dạng datetime hệ thống khác nhau và truy vấn chứa ngày được chuyển đổi thành một chuỗi, định dạng nào sẽ không cho tôi lỗi.Nền văn hóa trung tính dateformat cho SQL Server

+3

sẽ là ISO –

+0

@Soham: Không phải múi giờ (cho ngày được gửi) cũng được yêu cầu không? – shahkalpesh

+0

@shahkalpesh - Đó là những gì tôi muốn tránh. –

Trả lời

10

Tôi khuyên bạn nên đọc sốcủa Tibor Karaszi.

Nếu bạn nhập ngày/giờ ở định dạng không phân biệt hoặc ISO 8601, thì bạn nên sử dụng bất kỳ cấu hình nào.

Unseparated = 'yyyymmdd hh:mm:ss' 
ISO 8601 = 'yyyy-mm-ddThh:mm:ss' 

Cập nhật (từ bình luận):

Nếu bạn cần nhập một ngày duy nhất (không có bán thời gian), sau đó bạn phải sử dụng định dạng 'YYYYMMDD', như 'YYYY-MM-DD' sẽ không hoạt động. Xem bài viết được liên kết để biết ví dụ.

+3

Đối với các loại SQL Server và 'DATETIME', bạn cần sử dụng' YYYYMMDD' (** không có dấu gạch ngang! ** nếu bạn chỉ cần DATE - không có thời gian) hoặc định dạng bạn đã đề cập ('yyyy-mm-ddThh: mm : ss') - cả hai đều hoạt động. –

+0

Có, tôi đã đề cập cả hai. Tôi thường thích phiên bản "không có dấu gạch ngang". Nó ngắn gọn hơn. – MicSim

+0

Không thực sự - bạn không đề cập đến định dạng nếu bạn chỉ cần ngày (không có thời gian). Trái ngược với những gì người ta có thể tin rằng, 'YYYY-MM-DD' sẽ ** KHÔNG ** làm việc (trong khi' YYYYMMDD') không .... –

0

Bạn có thể xem xét lưu trữ ngày/giờ ở định dạng UNIX time.

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