我有一个 PowerShell 脚本,它从注册表中读取日期,然后在 SQL 查询中使用它
# get date from registry
$avdate = (readregistry -regpath "HKLM:\SOFTWARE\MCAFEE\agent" -targetval "InstallTime") -as [DateTime]
$avdate = $avdate.tostring("yyyy-MM-dd HH:mm:ss")
# query, ExecQuery() makes calls to the database, EscapeQuote() is for string formatting
$returnRS = ExecQuery("exec SystemCheckerVBS_UpdateComputer '" + (EscapeQuote($serialNumber)) + "','" + (EscapeQuote($computerName)) + "',3,'$hostip','$hostmac','$avdate','$ostype','$osbit','$spver','$sdc'")
#query function
function local:ExecQuery($sqlStr){
#write-host "query: $sqlstr" #debug
$SqlCmd.CommandText = $sqlStr
$SqlAdapter.SelectCommand = $SqlCmd
$dataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
return $dataSet
}
运行它产生的查询时(异常调用“填充”与“1”参数:“错误将数据类型 varchar 转换为日期时间。”)。使用“yyyMMdd”格式也不起作用,也不能直接将其作为日期时间对象传递。这里是 SQL 过程接收数据的地方,只有过程中的其他用途被传递到插入和更新语句中而没有改变。没有其他变量是或处理日期时间。
@I_AntiVirusDate datetime = '2001-01-01 00:00:01'
这是格式问题、语法还是其他问题?