sql >> Database >  >> RDS >> Sqlserver

SQLCLR en DateTime2

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


  1. Back-ups maken van SQL-databases met de VDP Advanced SQL Agent

  2. SQL-referentietabel:basisquery's maken en schrijven

  3. Oracle:manier om een ​​niet-gegroepeerde kolom samen te voegen in gegroepeerde resultaten

  4. Ruby on Rails MySQL #08S01Slechte handdruk - MySQL downgraden?