如何从 LSN 中减去

How to subtract from LSN

我需要从 lsn(二进制日期)中减去 5 秒。到目前为止我取得的成就是

select DATEADD(SECOND,-5,sys.fn_cdc_map_lsn_to_time(sys.fn_cdc_get_max_lsn()))

不过这里好像比较拥挤。我寻找的是直观的东西

sys.fn_cdc_get_max_lsn()-0.5`sys.fn_cdc_get_max_lsn()

创建一个自定义函数来包装它:

CREATE FUNCTION dbo.MyCustomLSNDate ()
RETURNS DATETIME
AS
BEGIN
    RETURN DATEADD(
            SECOND,
            -5,
            sys.fn_cdc_map_lsn_to_time(sys.fn_cdc_get_max_lsn()))
END

如果需要,您可以参数化要减去的秒数。创建后你可以简单地写:

SELECT dbo.MyCustomLSNDate()