Dar*_*te1 3 powershell datetime date environment-variables
我遇到了一个奇怪的问题。当服务器的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)) }
Run Code Online (Sandbox Code Playgroud)
我检索日期的唯一方法是Get-Date,没有任何特殊的操作。当设置为以下时,它会生成此错误Dutch (Belgium)
:
Exception calling "ExecuteNonQuery" with "0" argument(s): "Conversion failed when converting date and/or time from char
acter string."
Run Code Online (Sandbox Code Playgroud)
我在为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')
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是更改 SQL Express 2014 中输入的默认语言:
Properties > Advanced
Default language
Dutch
(或您使用的)Ok
SQL Management Studio
去Security > Logins
(在数据库下方)user name
并选择Dutch
如下Default language
SQL Management Studio
,你应该就可以开始了结果:Get-Date
当您在 PowerShell 代码中
使用 CmdLet 时,它将在将数据传输到 SQL 时按设计工作。SQL 和 Windows 的系统语言仍然是英语,但使用的格式是荷兰语。
归档时间: |
|
查看次数: |
30642 次 |
最近记录: |