2013-03-11 36 views
0

我有兩個參數,fromto date。我需要從PowerShell傳遞到SQL stored procedure。我創建了一個GUI,以'YYYY-MM-DD'格式輸入參數。但是,它是一個字符串,我需要將它轉換爲'YYYY-MM-DD,00:00:000'格式的sqldatetime,以便它可以在SQL中正確生成。將字符串從PowerShell轉換爲sqldbtype。 datetime

我嘗試了下面,它不工作。我做錯了什麼?

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Server=localhost;Database=AMSDataWarehouse  test;Integrated Security=SSPI" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
$SqlCmd.Connection = $SqlConnection 
$SqlCmd.CommandText = "YQBreport1" 
SqlParameter param1 = new SqlParameter("@from",System.Data.SqlDbType.DateTime); 
param1.Value = $from; 
SqlParameter param2 = new SqlParameter("@to",System.Data.SqlDbType.DateTime); 
param2.Value = $to; 
$SqlConnection.Open() 
$sqlcmd.ExecuteNonQuery() 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet 
$SqlAdapter.Fill($DataSet) 
$SqlConnection.Close() 
$SQLResult =$DataSet.Tables[0] 
$commands = $SQLResult | foreach-object -process { $_.output }> output.ps1 
.\output.ps1 

回答

1

你的語法是無效的PowerShell:

SqlParameter param1 = new SqlParameter("@from",System.Data.SqlDbType.DateTime); 
param1.Value = $from; 

試試這個:

$param1 = $SqlCmd.Parameters.Add("@from", [System.Data.SqlDbType]::DateTime) 
$param1.Value = Get-Date $from 
$param2 = $SqlCmd.Parameters.Add("@to", [System.Data.SqlDbType]::DateTime) 
$param2.Value = Get-Date $to 
+0

可以作爲到Get-日期添加-format 「YYYY-MM-DD」 選項改進 – solidrevolution 2013-03-11 10:52:56

+0

謝謝你,它的工作原理! – Apriljuly 2013-03-11 13:03:21

+0

新的問題,值似乎並沒有傳遞給存儲過程,是我的連接字符串錯了嗎? – Apriljuly 2013-03-11 13:19:46