我遇到了一个奇怪的问题。当服务器的Region and Language
设置被设置为English (United States)
包含日期和时间的对象没有问题。但是当我将其更改为我的国家本地时Dutch (Belgium)
我的一些 PowerShell 脚本遇到问题。
PowerShell 中是否有某个变量需要设置来解决此问题?或者我是否必须始终在服务器上默认为英文日期格式?
我们使用例如SQL module
由 Don Jones 提供,用于填充 SQL 数据库。此行在设置为荷兰语时会生成错误,但在设置为英语时不会生成错误:
if ($properties[$property] -eq 'datetime2') { [datetime]$prop = $result.GetDateTime($result.GetOrdinal($property)) }
我唯一能做的就是检索日期Get-Date没有什么特别的。当设置为时它会生成此错误Dutch (Belgium)
:
Exception calling "ExecuteNonQuery" with "0" argument(s): "Conversion failed when converting date and/or time from char
acter string."
我在生成东西时遇到了同样的问题Excel床单。它还抱怨日期时间格式。
用于导出信息,例如DateTime
字段到 SQL,默认语言设置是English (United States)
.
所以当你的Region and Language
设置与 SQL 的默认设置不同,为:English (United States)
Dutch (Belgium)
,您应该在代码中使用以下格式以符合英语默认值:
Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
$_.whenCreated.ToString('yyyy-MM-dd HH:mm:ss')
另一个解决方案是更改 SQL Express 2014 中输入的默认语言:
- 右键单击服务器实例并选择
Properties > Advanced
- Change
Default language
to Dutch
(或者你用什么)
- 确认
Ok
- 还在
SQL Management Studio
go to Security > Logins
(在数据库下方)
- 双击您的
user name
并选择Dutch
下面为Default language
- Restart
SQL Management Studio
你应该可以走了
Result:当您使用 CmdLet 时Get-Date
在您的 PowerShell 代码中,当将数据传输到 SQL 时,它将按设计工作。 SQL 和 Windows 的系统语言仍然是英语,但使用的格式是荷兰语。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)