我有点奇怪的问题。将服务器的Region and Language设置设置为English (United States)时,包含日期和时间的对象没有问题。但是,当我将其更改为我的国家/地区本地Dutch (Belgium)时,我的某些PowerShell脚本出现了问题。在PowerShell中是否有某个变量需要设置以解决此问题?还是我必须一直默认使用服务器上的英语日期格式?例如,我们使用Don Jones提供的SQL module填充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 character string."为Excel工作表生成内容时,我遇到了同样的问题。它还抱怨日期时间格式。 最佳答案 要将DateTime字段之类的信息导出到SQL,将使用默认语言设置English (United States)。因此,当您的Region and Language设置与SQL的默认设置不同时:English (United States) Dutch (Belgium),您应在代码中使用以下格式以符合英语默认值:"Key" = (Get-Date -Format "yyyy-MM-dd HH:mm:ss")"Key" = $_.whenCreated.ToString("yyyy-MM-dd HH:mm:ss")另一个解决方案是更改SQL Express 2014中输入的默认语言:右键单击服务器实例,然后选择Properties > Advanced 将Default language更改为Dutch(或您使用的方式)用Ok确认仍在SQL Management Studio中,转到Security > Logins(在数据库下面)双击您的user name,然后在下面选择Dutch作为Default language 重新启动SQL Management Studio,您应该会喜欢 结果:在PowerShell代码中使用CmdLet Get-Date时,将数据传输到SQL时将按设计工作。 SQL和Windows的系统语言仍为英语,但使用的格式为荷兰语。
10-07 19:10
查看更多