SQL Серверный запрос в PowerShell, ограничить мои результаты по дате - PullRequest
0 голосов
/ 05 августа 2020

Я использую PowerShell для подключения к базе данных SQL сервера, и я хочу ограничить свой результат.

Я использую модуль SqlServer и Invoke-Sqlcmd. Мне не нужны данные с датой старше 90 дней. Следующий код используется для получения полных данных

$DataRange = ((Get-date) + (New-TimeSpan -Days -90))
$Database = DB02_Tool.dbo.Cert
$ServerInstans = DBClu01\DbClu01Cert
$Query = "SELECT encoded, not_before, not_after FROM " + $Database
$Data = Invoke-SqlCmd -ServerInstance $ServerInstans -Query $Query -As DataRows

Предел, который я хочу реализовать, находится на not_before, который имеет тип данных datetime, и я хочу, чтобы он ограничивал даты не старше 90 дней назад, поскольку используется $ Daterange. Как ограничить запрос? Есть идеи?

1 Ответ

0 голосов
/ 05 августа 2020

Вы можете сделать это в запросе SQL. Использование DATEADD для добавления или вычитания дней и GetDate() для получения текущей даты и времени.

$Query = "SELECT encoded, not_before, not_after FROM " + $Database + " WHERE not_before >= DATEADD(Day, -90, GetDate())"

Или вы можете передать параметр из Powershell с помощью переключателя -Variable. См. Пример 3 в документации.

Сначала необходимо преобразовать строку в универсальное значение даты и времени с помощью ToString ("u")

$StringArray = "MYVAR1='$($DataRange.ToString("u"))'"
$Query = "SELECT encoded, not_before, not_after FROM " + $Database  + " WHERE not_before >= `$(MYVAR1)"

$Data = Invoke-SqlCmd -ServerInstance $ServerInstans -Query $Query -Variable $StringArray -As DataRows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...