Anda perlu mengubah tipe DateTime di tanda tangan Metode Fungsi Anda. SQLDateTime memetakan ke DateTime di database.
System.DateTime lebih tepat dan bisa dipetakan ke DateTime2 (tetapi secara default, itu akan dihapus sebagai DateTime dalam skrip penerapan).
[SqlFunction(DataAccess = DataAccessKind.None)]
//OLD Signature public static SqlDateTime UTCToLocalDT(SqlDateTime val)
public static DateTime UTCToLocalDT(DateTime val) {
...
}
Kemudian Anda dapat mengubah skrip penerapan Anda untuk dibaca.
CREATE FUNCTION [UTCToLocalDT]
(
@dt [datetime2]
)
RETURNS [datetime2]
AS
EXTERNAL NAME [SQLCLR].[MyCompany.SQLCLR.DateTimeHelpCLR].UTCToLocalDT
GO
Menjalankan fungsi Anda sekarang akan memberi Anda hasil yang lebih tepat.
DECLARE @input DateTime2, @output DateTime2
SET @input = '2010-04-12 09:53:44.48123456'
SET @output = YourDatabase.dbo.[UTCToLocalDT](@input)
SELECT @input, @output