当我GETDATE()
在 SQL Server Management Studio 中执行返回日期时间(如 )的函数时,输出的格式为用户的“文化”(区域/语言设置)。但是,当通过 cmdlet 在 Powershell 中执行相同的查询时,Invoke-Sqlcmd
输出将被格式化为美国日期格式(我假设这是不变的文化)。其他 Cmdlet 例如Get-Date
返回 CurrentCulture 中的日期时间。
如何确保输出Invoke-Sqlcmd
尊重 CurrentCulture 设置?
演示的最小代码示例
$result = Invoke-Sqlcmd -query "select GETDATE() as datetime" -ServerInstance ...
$now = Get-date -format "yyyy-MM-dd HH:mm:ss"
if ( $result.datetime -eq $now) {
Write-output "ok"
} else {
Write-warning "dates mismatch '$($result.datetime)' should be '$now'"
}
警告显示以美国格式显示的第一个日期时间和以指定格式显示的第二个日期时间