boo*_*ist 3 sql-server audit type-conversion
SQL Server 审核文件名使用以下模式:
Name_GUID_PartitionNumber_Timestamp.sqlaudit
下面是文件名示例:
Audit-ObjectChanges_2D94C1E8-CCAD-405F-A9F2-A45FA5EDAD8F_0_132327053636850000.sqlaudit
如果我查询,sys.dm_server_audit_status我会看到status_time对于我进行的四次审核,该列的值为 2020-04-30 08:29:22.6070000。所有文件名的时间戳部分均包含 132327053636850000。
所以我假设 132327053636850000 = 2020-04-30 08:29:22.6070000,但是如何将文件名时间戳转换为以前审核文件的日期时间格式?
谢谢
1601-01-01这看起来像是自( FILETIME)以来的 100 纳秒刻度数
因此,基于以下工作(125911584000000000是 1601 到 2000 之间这些刻度的数量。首先将其减去以避免溢出int)
返回的时间似乎也是 UTC,因此您需要转换为您当地的时区(我已经对此做出了假设)。
DECLARE @value BIGINT = 132327053636850000,
@datetime DATETIME2
SELECT @datetime = DATEADD(MILLISECOND,
@value%10000000 / 10000,
DATEADD(SECOND,
( @value - 125911584000000000 ) / 10000000,
CAST('2000-01-01' AS DATETIME2)))
SELECT CONVERT(DATETIME2(3),
SWITCHOFFSET(@datetime,
DATEPART(TZOFFSET, @datetime AT TIME ZONE 'GMT Standard Time')))
Run Code Online (Sandbox Code Playgroud)
退货
2020-04-30 08:29:23.685
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |