Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cài đặt nào cung cấp định dạng ngày giờ mặc định của SQL Server?

Đừng làm vậy! Không sử dụng chuỗi thay vì ngày tháng và không sử dụng định dạng ngày tháng hoặc ngày giờ theo văn hóa cụ thể, đó là một công thức dẫn đến thảm họa.

SQL Server không có "định dạng ngày tháng", chỉ định dạng nó sử dụng để chuyển đổi ngày tháng sang và từ chuỗi. Một trong số chúng là mặc định, được kiểm soát bởi đối chiếu của máy chủ. Bạn không thể giả định cũng như không nên phụ thuộc vào một đối chiếu cụ thể, vì vậy bạn nên tránh chuyển đổi bất cứ khi nào có thể. Hơn nữa, việc chuyển một giá trị chuỗi có thể ngăn SQL Server sử dụng chỉ mục trên các cột ngày tháng vì nó sẽ phải chuyển đổi chuỗi thành kiểu cột bên dưới.

Việc chuyển ngày dưới dạng các biến hoặc tham số được nhập ngày sẽ dễ dàng và an toàn hơn rất nhiều. Bạn tránh được toàn bộ sự lộn xộn chuyển đổi theo cách này, đến và đi và tránh các cuộc tấn công đưa vào SQL.

Không có lý do gì để chuyển chuỗi thay vì ngày đến máy chủ. Tất cả các máy khách SQL Server (bao gồm cả ADO.NET) đều cho phép bạn thực thi các truy vấn được tham số hóa. Các ORM như NHibernate và Entity Framework cũng tạo ra các truy vấn được tham số hóa cho các cột được định kiểu ngày tháng.

Bất cứ khi nào bạn cần tạo một chuỗi ký tự, hãy sử dụng một trong các định dạng bất biến như 20140913 hoặc 2012-11-07T18:26:20

Bạn có thể đọc thêm về nó tại Viết Tuyên bố T-SQL Quốc tế



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay đổi cấu hình thư cơ sở dữ liệu mặc định cho người dùng trong SQL Server (T-SQL)

  2. Trích xuất URL từ một trang web?

  3. Không thể đăng nhập vào SQL Server + Xác thực SQL Server + Lỗi:18456

  4. Thiết lập cơ sở dữ liệu SQL Server cục bộ

  5. Nhận số lượng các mục và giá trị của chúng trong một cột