आपको अपनी फ़ंक्शन विधि के हस्ताक्षर में दिनांक समय प्रकार बदलने की आवश्यकता है। SQLDateTime डेटाबेस पर डेटटाइम के लिए मैप करता है।
System.DateTime अधिक सटीक है और कर सकता है डेटटाइम 2 पर मैप किया जाना चाहिए (लेकिन डिफ़ॉल्ट रूप से, इसे तैनाती स्क्रिप्ट में डेटटाइम के रूप में छोड़ दिया जाएगा)।
[SqlFunction(DataAccess = DataAccessKind.None)]
//OLD Signature public static SqlDateTime UTCToLocalDT(SqlDateTime val)
public static DateTime UTCToLocalDT(DateTime val) {
...
}
फिर आप अपनी परिनियोजन स्क्रिप्ट को पढ़ने के लिए संशोधित कर सकते हैं।
CREATE FUNCTION [UTCToLocalDT]
(
@dt [datetime2]
)
RETURNS [datetime2]
AS
EXTERNAL NAME [SQLCLR].[MyCompany.SQLCLR.DateTimeHelpCLR].UTCToLocalDT
GO
अपने फ़ंक्शन को चलाने से अब आपको अधिक सटीक आउटपुट मिलना चाहिए।
DECLARE @input DateTime2, @output DateTime2
SET @input = '2010-04-12 09:53:44.48123456'
SET @output = YourDatabase.dbo.[UTCToLocalDT](@input)
SELECT @input, @output