Как преобразовать время Windows NT из запроса SQL в читаемый формат? Я выполняю извлечение учетных записей пользователей из AD и хочу конвертировать или CAST метку времени Windows AD в лучший читаемый формат. Проблема в том, что у меня возникают проблемы с преобразованием при извлечении.
Запрос:
SELECT
CASE
WHEN CHARINDEX('@', userPrincipalName) > 7
THEN SUBSTRING(userPrincipalName, 1, (CHARINDEX('@', userPrincipalName)) - 1)
ELSE ''
END AS edipi
,UPPER(samaccountname) AS samaccountname
,givenName AS firstName
,sn AS lastName
,initials
,UPPER(mail) AS email
,userAccountControl
,telephoneNumber
,title
,accountExpires
FROM
OPENQUERY
(ADSI
,'select
givenName,
samaccountName,
userPrincipalName,
sn,
initials,
mail,
userAccountControl,
telephoneNumber,
title,
accountExpires
from ''LDAP PATH''
where objectcategory=''person'' and objectclass = ''user'' and name=''*'' '
);
Мой запрос возвращает поле accountExpires во времени Windows NT, но я хочу, чтобы оно было чем-товот так:
2020-02-09 15: 23: 36.367
вместо этого:
132257354163700000
Я пришел к простому решениюделать конвертацию один за другим, но я хочу, чтобы он выполнял CAST по требованию вместо того, чтобы делать это для каждого пользователя
DECLARE @accountExpired BIGINT
SET @accountExpired = 132257354163700000; --This is a random time pulled from a user from the above select statement.
SELECT CAST((@accountExpired / 864000000000.0 - 109207) AS DATETIME);