在处理使用德语而不是英语的表示值的SQL Server 2005和SQL Server 2008时遇到一些问题。服务器和操作系统以德语版本运行。
SET LANGUAGE deutsch;
SELECT
CONVERT(datetime, '31. Dezember 1999') as a,
CONVERT(nvarchar, CONVERT(datetime, '31. Dezember 1999')) as b,
CONVERT(float,'3.14159') as p,
CONVERT(nvarchar, CONVERT(float,'3.14159')) as q;
管理控制台中的输出是:
a=1999-12-31 00:00:00.000
b=Dez 31 1999 12:00AM
c=3,14159
d=3.14159
dateformat=dmy
这是不一致的。在(a)中,正确解析并显示Dec-31-1999的德语表示(并且只有德语工作..)。使用CONVERT显式转换相同的日期会返回一个字符串,该字符串将英语日期格式与德语缩写的月份名称混合在一起(如果您使用“Dez 31”而不是“Dec 31”则表示仔细观察)。
但是p从英语表示法(小数点)的字符串转换为浮点数,但以德语表示法(使用小数点逗号)显示,而显式转换到nvarchar再次以英语表示法生成数字。 OTOH CONVERT()不接受德语表示法中的输入以转换为浮点数。
所以,我有一个CONVERT函数:
但我需要的是SQL Server 2005,2008中的一个函数,它将当前用户语言的文本转换为支持的类型的值(datetime,float ...),并将这些值转换回文本表示形式。当前的用户语言。
这个功能是什么?
答案 0 :(得分:1)
[s]指定会话的语言环境。会议 language确定日期时间格式和系统消息。
设置CONVERT功能120的样式参数支持与语言无关的转换。
通常,您应该避免在数据库中使用特定于语言的格式,并在UI中实现它。