Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQLCLR и DateTime2

Трябва да промените типовете DateTime в подписа на вашия функционален метод. SQLDateTime преобразува в DateTime в базата данни.

System.DateTime е по-прецизен и може да бъде съпоставено с DateTime2 (но по подразбиране ще бъде премахнато като DateTime в скрипта за внедряване).

[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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е принудително заключване на ниво ред в SQL Server?

  2. получавате разделен със запетая низ от редове

  3. Подходящ индекс на SQL сървър за схема само за вмъкване

  4. Защо IS NOT NULL връща NULL стойности за Varchar(max) в SQL Server?

  5. Как да картографирате поле на обект, чието име е запазена дума в JPA