U moet de DateTime-typen in de handtekening van uw functiemethode wijzigen. SQLDateTime verwijst naar een DateTime in de database.
System.DateTime is nauwkeuriger en kan worden toegewezen aan DateTime2 (maar standaard wordt het als DateTime in het implementatiescript geplaatst).
[SqlFunction(DataAccess = DataAccessKind.None)]
//OLD Signature public static SqlDateTime UTCToLocalDT(SqlDateTime val)
public static DateTime UTCToLocalDT(DateTime val) {
...
}
Vervolgens kunt u uw implementatiescript aanpassen om te lezen.
CREATE FUNCTION [UTCToLocalDT]
(
@dt [datetime2]
)
RETURNS [datetime2]
AS
EXTERNAL NAME [SQLCLR].[MyCompany.SQLCLR.DateTimeHelpCLR].UTCToLocalDT
GO
Het uitvoeren van uw functie zou u nu een nauwkeurigere uitvoer moeten geven.
DECLARE @input DateTime2, @output DateTime2
SET @input = '2010-04-12 09:53:44.48123456'
SET @output = YourDatabase.dbo.[UTCToLocalDT](@input)
SELECT @input, @output