0

最近我决定搬到另一台服务器。现在我的应用程序运行在具有不同文化(IT 和 EN)的不同服务器上。

一切正常,但现在我在日期和数字方面面临许多问题。

主要问题似乎是 SQL Server。事实上,SQL SERVER 会抛出错误。我使用 ParseExact 方法解决了日期问题:

   e.Command.Parameters["@Expiry"].Value = 
             DateTime.ParseExact("31/12/2099", "dd/MM/yyyy", null);

对于十进制数,我必须交换“。” 和“,”(取决于文化)如果我想让应用程序工作:

   Latitude.Value = Latitude.Value.Replace(".", ","); //ONLY for ITALIAN CULTURE
   e.Command.Parameters["@Latitude"].Value = Latitude.Value;

我再说一遍:错误是由 SqlServer 生成的。有没有办法一劳永逸地设置文化?

PS:EN 服务器是 GoDaddy Hosting。

更新: 问题是纯 Sql Server。事实上,检查我的服务器,我在第一个服务器上发现了一个“,”和一个“。” 在第二个作为货币和小数的分隔符。我发现:ALTER LOGIN 'MYDBLOGIN' WITH DEFAULT_LANGUAGE = Italian; 去

通过前面的查询,我能够更改 sql server 上的文化。但是,问题仍然存在。

4

3 回答 3

0
 DateTime myDate;
 DateTime.TryParse(yourdate, new CultureInfo("en-US"), DateTimeStyles.None, out myDate);

或者

 DateTime datet1=new DateTime(2012,5,1);
 string startdate = datet1.ToString("d", DateTimeFormatInfo.InvariantInfo);

您可以更改您的数据库整理:

ALTER DATABASE test2 -- put your database name here
   COLLATE Latin1_General_CS_AS   -- replace with whatever collation you need

您的问题不在于 sqlserver,您在根据 CultureInfo 插入/获取日期时间时修改了代码

于 2012-08-22T12:33:52.050 回答
0

而不是每次都改变 SQL Server 文化你为什么不使用

   Convert.ToDecimal(Latitude, CultureInfo.InvariantCulture);
于 2012-08-22T11:25:57.387 回答
0

这会返回什么?

 select @@LANGID, @@LANGUAGE

如果是意大利语,

 set language us_english

(管他呢...)

于 2012-08-22T09:55:19.770 回答