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. MySQL pidが終了しました(mysqlを起動できません)

    2. Mysqlは時間マッチングで結合します

    3. Postgresイベントトリガーで変更されたテーブルの名前を取得するにはどうすればよいですか?

    4. Sqlサーバー2008でnvarcharをbigintに変換します