sql >> Databasteknik >  >> RDS >> Sqlserver

SQLCLR och DateTime2

Du måste ändra DateTime-typerna i signaturen för din funktionsmetod. SQLDateTime mappas till en DateTime i databasen.

System.DateTime är mer exakt och kan mappas till DateTime2 (men som standard kommer den att tas bort som en DateTime i distributionsskriptet).

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

Sedan kan du justera ditt distributionsskript för att läsa.

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

Att köra din funktion bör nu ge dig mer exakt utdata.

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


  1. Sänd MySQL-databastabelldata i realtid

  2. World Backup Day:4 intressanta dataförlustfakta att veta

  3. MySQL-syntax för Join Update

  4. Hur man exporterar SQL-fråga till TXT med kommandoraden