为什么FORMAT无法与expandproperty一起使用

时间:2019-02-06 00:20:39

标签: sql-server powershell

我正在尝试使用以下脚本检查来检查当前是否在表中添加了最新行:

import pandas as pd
df_test['SaleDate'] = pd.to_datetime(df_test['SaleDate'])

在添加格式之前,expand属性可以很好地工作,可以使我获得最新的UPDATE_TIME值

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

withoutFORMATworking

但是,当我向查询中添加$updateTime = "SELECT TOP 1 [UPDATE_TIME] FROM [dbo].[$Table] ORDER BY UPDATE_TIME DESC" | Select -ExpandProperty UPDATE_TIME; 时,会导致此错误:

  

选择:找不到属性“ UPDATE_TIME”。

     
      
  • ... ble] ORDER BY UPDATE_TIME DESC“ |选择-ExpandProperty UPDATE_TIME;
  •   

我需要使用FORMAT,因为我想忽略秒数,或者如果没有了,我可以忽略FORMAT值和UPDATE_TIME值之间的1秒差异,那会变得更好。

Get-Date

使用FORMAT而不是expand属性,我得到以下输出: withFormatNoexpandproperty

1 个答案:

答案 0 :(得分:4)

PowerShell控制台是否将字符串作为SQL查询自动执行? PowerShell通常不这样做。

无论如何,假设您的PowerShell实例实际上是这样工作的,则使用FORMAT()函数(或其他函数)会更改结果列的标题,而该列又将成为输出对象各自属性的名称(s)。因此,UPDATE_TIME属性在这些对象上不存在,因此无法扩展。

您需要定义一个列名来解决此问题:

SELECT TOP 1 FORMAT(...) AS UPDATE_TIME ...