请注意,我绝不是编码员,我只是想协助从 SQL Server 2008 R2 和 2008 迁移到 SQL Server 2022 和 2019。
当我执行以下 T-SQL 查询时:
select convert(datetime,'08/15/2022',103)
我收到一个错误:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围
当我将其更改为:
select convert(datetime,'08/15/2022',101)
...有用。
我知道英国英语不使用 mm/dd/yyyy,这是我正在做的一项测试,以查看 SQL Server 使用的是哪种默认语言,因此我可以识别网站中的问题。因此,我希望将 SQL 中的默认语言设置为英国英语而不是美国英语。
我确实使用了备份/恢复迁移。SQL Server 2019 对 SQL 查询的解释似乎与 SQL Server 2008 略有不同。我无法访问编码网页,因此无法对 ASP 编码进行任何更改。
有什么方法可以运行一些 T-SQL 查询来改变 SQL Server 2019 查看日期的方式并强制它使用英国英语?
服务器区域设置已正确设置为南非英语(与英国英语相同),因此我不确定在哪里可以进行任何更改,以便我们获得正确的日期和时间格式。
如果我更改相关用户的默认语言,这会实现我的目标吗?我是否需要重新启动 SQL Server 才能实施更改?我指的用户是在SQL中设置的连接数据库运行查询的用户,在ODBC驱动设置中设置。
这与我们正在运行的网站有关,我无法更改其编码,因为我对 ASP 一无所知。
这是导致问题的代码:
sSQL = "UPDATE VR_UPLOAD SET clnt_status = 'O', clnt_date_send = '" &
Left(strDate, 2) & "-" & Mid(strDate, 5, 2) & "-" & Right(strDate, 4) & " " &
Left(strTime, 2) & ":" & Mid(strTime, 3, 2) & ":" & Right(strTime, 2) & ".000',
CLNT_OUTFILE = '" & strFileName &
"' where clnt_validated = '' and clnt_status = 'i'"
oConn.Execute(sSQL)
正如马丁史密斯在他删除的答案中指出的那样:
可能的解决方案
尽管如此,我想指出几个可能的解决方案。
1. 更改 SQL Server 实例语言
通过以下方式设置 SQL Server 实例的默认语言:
23 是英式英语的 langid,可以在
sys.syslanguages
表中检索到:您可以使用此脚本验证服务器的当前运行设置:
在我的 SQL Server 实例上,这会产生:
2.更改客户端连接设置
使用以下 SET 命令更改当前正在运行的脚本中的语言设置:
3.设置日期格式
在运行脚本之前更改日期格式:
4.更改SQL Server登录的默认语言
如果您想更改 SQL Server 登录的默认语言,请执行类似的脚本:
参考阅读