2

我正在尝试使用当前日期时间将字段添加到数据表中。我想在此处添加它,以便当我使用另一段代码创建表时,它会将其创建为 datetime(add-sqltable,值得一提)。

#create the datatable
$quer = invoke-sqlcmd2 -serverinstance myservername -database "tempdb" -query "select @@servername as servername" -As 'DataTable' 
#now add the datetime field
$quer.columns.add("InsDate",[DateTime])

在这一点上,我卡住了。这不起作用:

$quer | %{$_.InsDate = get-date}

我收到此错误消息:

Exception setting "InsDate": "Unable to cast object of type
 'System.Management.Automation.PSObject' to type 'System.IConvertible'.Could
n't store <2/26/2013 11:26:23 AM> in InsDate Column.  Expected type is DateTime."

更改格式也不起作用。有没有办法做到这一点?谢谢。

4

3 回答 3

3

试试这个:

$quer | %{[datetime]$_.InsDate = get-date}

或这个:

$quer | %{$_.InsDate = [datetime](Get-Date)}

我没有能力测试您的具体案例,但我相信其中一个应该可以工作。

编辑:将关闭的“)”更改为“}”以修复答案。

于 2013-02-26T21:22:42.327 回答
0

这是一个解决方法:

    $date = get-date 
    $quer | %{$_.InsDate = [DateTime]$date}

在这里找到: DateTime parsing in PowerShell

于 2013-02-26T17:58:16.647 回答
0

嗯可能在这里遗漏了明显的东西,但是您不能调整您的 SQL 查询以从源头提取日期时间吗?

像这样的东西:

select
@@servername as [servername],
GETDATE() as [DateTime]

这可能是我会做的,而不是以后再捏造它!:D

于 2013-02-26T21:50:54.387 回答