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

SQLCLR và DateTime2

Bạn cần thay đổi các kiểu DateTime trong chữ ký của Phương thức hàm của bạn. SQLDateTime ánh xạ tới DateTime trên cơ sở dữ liệu.

System.DateTime chính xác hơn và có thể được ánh xạ tới DateTime2 (nhưng theo mặc định, nó sẽ bị loại bỏ dưới dạng DateTime trong tập lệnh triển khai).

[SqlFunction(DataAccess = DataAccessKind.None)]
//OLD Signature public static SqlDateTime UTCToLocalDT(SqlDateTime val) 
public static DateTime UTCToLocalDT(DateTime val) {
   ...
}

Sau đó, bạn có thể điều chỉnh tập lệnh triển khai của mình để đọc.

CREATE FUNCTION [UTCToLocalDT]
(
    @dt [datetime2]
)
RETURNS [datetime2]
AS
    EXTERNAL NAME [SQLCLR].[MyCompany.SQLCLR.DateTimeHelpCLR].UTCToLocalDT
GO

Việc chạy chức năng của bạn bây giờ sẽ cung cấp cho bạn kết quả chính xác hơn.

DECLARE @input DateTime2, @output DateTime2
SET @input = '2010-04-12 09:53:44.48123456'
SET @output = YourDatabase.dbo.[UTCToLocalDT](@input)
SELECT @input, @output


  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 tốt nhất để mã hóa SSN trong SQL Server 2008 là gì?

  2. Có giới hạn về số lượng bảng trong chế độ xem VÀ cơ sở dữ liệu SQL Server không?

  3. SQL Server 2005 và phạm vi bảng tạm thời

  4. Máy chủ Sql sử dụng DateTime làm Khóa chính

  5. Trong tsql, một câu lệnh Chèn với một câu lệnh Chọn có an toàn về mặt đồng thời không?