为什么不与expandproperty工作FORMAT

问题描述 投票:1回答:1

我想,以检查是否在表中的最新行已在当前时间使用以下脚本检查补充说:

$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;

添加格式之前,扩大财产被工作得很好的预期让我最新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因为我想忽略秒,或者如果有远,我可以忽略UPDATE_TIME值和Get-Date值,这将是更好之间1秒的差别。

$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 ]"
}

与格式,但不能扩大财产,我得到这个输出:withFormatNoexpandproperty

sql-server powershell
1个回答
4
投票

请问您的PowerShell控制台自动执行字符串作为SQL查询? PowerShell不正常做到这一点。

总之,假设你的PowerShell实例实际工作这种方式,使用FORMAT()功能(或其他功能)改变的结果列,这反过来又成为输出对象(S)的各自属性的名称的标题。正因为如此UPDATE_TIME不那些对象上存在,因此该属性不能扩展。

您需要定义一个列名来修复:

SELECT TOP 1 FORMAT(...) AS UPDATE_TIME ...
© www.soinside.com 2019 - 2024. All rights reserved.