在使用德语表示与英语表示不同的值时,我在使用 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) 中,1999 年 12 月 31 日的德语表示被正确解析和显示(并且只有德语作品..)。使用 CONVERT 显式转换相同的日期会返回一个字符串,该字符串将英语日期格式与德语缩写月份名称混合在一起(如果仔细观察,它会显示“Dez 31”而不是“Dec 31”)。
但是 p 从英文表示法(小数点)的字符串转换为浮点数,但以德文表示法(使用十进制逗号)显示,而显式转换为 nvarchar再次产生英文表示法的数字。OTOH CONVERT() 不接受以德语表示法输入以转换为浮点数。
所以,我有一个 CONVERT 函数:
- 它仅接受用于转换为德语表示法的日期时间的字符串。
- 但只接受字符串转换为英文浮动。
- 并将 datetime 值转换为 nvarchar 混合German 和 English。
- 将浮点值转换为英语。
但我需要的是 SQL Server 2005、2008 中的一个函数,它将文本从当前用户语言转换为支持类型的值(日期时间、浮点数......)并将这些值转换回相对于当前用户的文本表示语。
这是什么功能?