1

我有一个 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'

这是格式问题、语法还是其他问题?

4

1 回答 1

0

您可能想要使用这三种格式之一

'2001-01-01T00:00:01'
CAST('2001-01-01 00:00:01' AS DateTime)
'2001-01-01'
于 2020-01-29T23:37:20.973 回答