2009-07-27 31 views
10

Trên DB thử nghiệm của tôi, ngày được hiển thị ở định dạng DD/MM/YYYY. Bằng cách hiển thị tôi có nghĩa là khi bạn nhấp chuột phải, mở bảng trong Management Studio, dữ liệu trả về được hiển thị ở định dạng DD/MM/YYYY.Các vấn đề về Ngày giờ của Máy chủ SQL. Mỹ vs Anh?

Điều thú vị là khi tôi viết T-SQL để truy xuất bản ghi, tôi phải nhập định dạng MM/DD/YYYY để lấy lại dữ liệu phù hợp. Có anyway tôi có thể sắp xếp này để một định dạng DD/MM/YYYY?

Trả lời

11

Bạn có thể sử dụng SET LANGUAGE để chọn định dạng ngày tháng SQL Server hy vọng trong các truy vấn (Tôi nghĩ studio quản lý sử dụng cài đặt trong khu vực khách hàng máy tính cho mục đích hiển thị, không chắc chắn mặc dù). Tuy nhiên, tôi khuyên bạn nên chuyển các giá trị bằng cách sử dụng các tham số thay vì nhúng chúng vào câu truy vấn. Bạn sẽ không gặp phải bất kỳ vấn đề nào nếu bạn sử dụng các tham số. Mọi thứ đều được chăm sóc.

set language us_english 
declare @d datetime = '1929/12/18' 

set language british 
declare @d datetime = '1929/12/18' -- fails 

Để thay đổi ngôn ngữ máy chủ mặc định:

declare @langid int = (select langid from syslanguages where name = 'british') 
exec sp_configure 'default language', @langid 
reconfigure with override 
+0

Đây là một điều tuyệt vời nhưng tôi đang tìm kiếm giải pháp lâu dài hơn là giải pháp phiên. – super9

+0

Ngọt ngào. FYI tên bảng đúng là sys.syslanguages. Ngoài ra, tôi chỉ phát hiện ra bạn có thể thay đổi ngôn ngữ mặc định ở cấp độ người dùng bằng cách đi tới Bảo mật -> Đăng nhập Người dùng -> Thuộc tính -> Ngôn ngữ. Cảm ơn vì Mehrdad – super9

+0

Nai: syslanguages ​​một mình sẽ hoạt động nếu bạn đang ở trong cơ sở dữ liệu chủ. Thêm 'sys.' vào dòng đó làm cho thanh cuộn xuất hiện vì vậy tôi rút ngắn nó;) –

4

Cá nhân, tôi luôn sử dụng định dạng YYYY-MM-DD (hoặc YYYYMMDD) vì nó không phải là văn hóa cụ thể, và, tốt, tôi đoán nó hấp dẫn với tôi bởi vì nó "hợp lý" (đặc biệt là khi được theo sau bởi một thời gian).

[Chỉnh sửa: Tôi chỉ nói về những gì tôi đưa vào kịch bản SQL của tôi để đảm bảo khả năng tương thích không phụ thuộc vào cài đặt máy chủ, không phải những gì SQL Server "hiển thị"]

+0

Làm thế nào để thay đổi truy vấn T-SQL Datime mặc định? – super9

+0

Xin lỗi, cần phải cụ thể hơn - câu trả lời được cập nhật. –

1

Trong hầu hết các trường hợp, cách chính xác để giải quyết điều này đơn giản là không bao giờ coi ngày tháng là một chuỗi. Nếu bạn chuyển vào một tham số hoặc sử dụng giá trị cột (đã nhập), thì văn bản của máy chủ chỉ đơn giản là không phải là một yếu tố. Ngoài việc tránh các vấn đề i18n, điều này cũng làm giảm bề mặt tấn công tiêm của bạn. Và nó cũng tiết kiệm được một vài chu kỳ CPU ;-p

Nếu bạn đang sử dụng EXEC cho SQL động, thì tương tự như vậy sẽ được tham số qua sp_ExecuteSQL.

+0

Các ngày được lưu trữ một cách chính thức dưới dạng định dạng DATETIME. Xin lỗi nếu tôi không rõ ràng. – super9

+0

Tôi giả định rằng; quan điểm của tôi là nó không nên * vấn đề * làm thế nào máy chủ muốn xử lý chúng như là văn bản nếu bạn chỉ đơn giản là không bao giờ (trong hệ thống của bạn) * xử lý * chúng như là văn bản. –

+0

Ồ, tôi hiểu ý bạn là gì. Tôi thường vượt qua chúng như là các biến nhưng lời khuyên tốt dù sao. Cảm ơn vì điều đó! – super9

2

Nếu bạn vượt qua trong DATETIME trong các định dạng

dd MMM yyyy 

ví dụ

"11 JUL 2009" 

không bao giờ có bất kỳ sự mơ hồ xung quanh tháng và ngày và do đó bạn không cần phải là một vấn đề

1

tôi cố gắng sử dụng hình thức kinh điển ODBC của một ngày bất cứ nơi nào có thể {d 'yyyy-mm-dd'} Bằng cách này tôi biết cách sql phục vụ r sẽ giải thích nó. Nó hoạt động trong TSQL tốt.

3

Bạn có thể đặt ngôn ngữ mặc định cho mỗi đơn vị SQL Server login. Không thể nhớ được, nhưng một cái gì đó như thế này:

sp_defaultlanguage @loginame = 'LoginName', @language = 'Language' 
1

Hoặc thêm địa chỉ này vào web của bạn.tập tin cấu hình:

</system.web> 
    <globalization culture="en-US" uiCulture="en-US" /> 
</system.web> 

hoặc bạn có thể thêm tuyên bố này trên trang:

<%@ Page uiCulture="en-US" culture="en-US" %> 

Hope trợ giúp này.

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