почему FORMAT не работает с expandproperty - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь проверить, была ли последняя строка в таблице добавлена ​​в текущий момент, используя следующую проверку скрипта:

$updateTime = "SELECT TOP 1 FORMAT([UPDATE_TIME], 'M/d/yyyy h:mm tt') FROM [dbo].[$Table] ORDER BY UPDATE_TIME DESC" |
              Select -ExpandProperty UPDATE_TIME;

Перед добавлением формата свойство раскрытия работало очень хорошо, как и предполагалось, получаяme последнее значение UPDATE_TIME

$updateTime = "SELECT TOP 1 [UPDATE_TIME] FROM [dbo].[$Table] ORDER BY UPDATE_TIME DESC" |
              Select -ExpandProperty UPDATE_TIME;

withoutFORMATworking

Однако, когда я добавил FORMAT к запросу, это приводит к этой ошибке:

Выбор: не найдено свойство "UPDATE_TIME".

  • ... ble] ORDER BY UPDATE_TIME DESC "| Выбрать -ExpandProperty UPDATE_TIME;

Мне нужно использовать FORMAT, потому что я хочу игнорировать секунды, или, если нет, я могу игнорировать разницу в 1 секунду между значением UPDATE_TIME и значением Get-Date, это было бы еще лучше.

$today = (Get-Date).ToString('M/d/yyyy h:mm tt')

if ($updateTime -eq $today) {
    Write-Host "`r`n generated successfully at [ $updateTime ]"
} else {
    Write-Host "`r`n NOT generated at [ $today ]"
}

С FORMAT, но не с расширением, я получаю этот вывод: withFormatNoexpandproperty

1 Ответ

0 голосов
/ 06 февраля 2019

Ваша консоль PowerShell автоматически выполняет строки как запросы SQL?Обычно PowerShell этого не делает.

В любом случае, при условии, что ваш экземпляр PowerShell действительно работает таким образом, использование функции FORMAT() (или других функций) изменяет заголовок столбца результата, который, в свою очередь, становитсяимя соответствующего свойства выходного объекта (объектов).Из-за этого свойство UPDATE_TIME не существует в этих объектах и ​​поэтому не может быть расширено.

Вам необходимо определить имя столбца, чтобы исправить это:

SELECT TOP 1 FORMAT(...) AS UPDATE_TIME ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...