2016-09-06 104 views
1

我有一个PS命令从一个PS脚本返回一个日期时间字段。如果在SQL Studio Manager中运行,SQL脚本将按预期工作,但如果我在Powershell内运行,它只是“计数”记录数,在本例中为“1”。Powershell v2.0 - SQL查询不返回日期

$SqlCmd.CommandText = 
"SELECT q.execution_queued_timestamp 
FROM [database].[dbo].[Execution_Queue] AS q 
LEFT JOIN [database].[dbo].[Execution_Queue_Lock] AS l 
ON l.lock_id = q.lock_id 
WHERE execution_status_code = 'q'" 
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet 
$SqlConnection.Close() 
$DataSet.Tables[0] 
$SqlAdapter.Fill($DataSet) 
$SQL = $SqlAdapter.Fill($DataSet) 

因此,不像我在SQL SM中那样获取日期时间格式,我在Powershell中获得“1”。

如果原始T-SQL是“Select *”,则会看到类似的行为,它会输出记录数而不是列出实际匹配。

任何想法?

回答

1

在$ DataSet对象中查找您的数据。我通常使用类似于

foreach ($row in $DataSet.Tables[0].rows) { $row.execution_queued_timestamp }
的东西,但是您应该可以直接转到返回的元素1(类似这样)(未经测试)
$DataSet.Tables[0].Rows[0].execution_queued_timestamp
$ SQL当您使用它时,将始终具有返回的行数。你可以忽略,如果你不关心返回的行数通过更改该行到
$SqlAdapter.Fill($DataSet) |out-null

+0

这一个帮助我谢谢!$ DataSet.Tables [0] .Rows [0] .execution_queued_timestamp – JDGEEK