0

最近、別のサーバーに移動することにしました。現在、私のアプリケーションは、異なるカルチャ (IT と EN) の異なるサーバーで実行されます。

すべてが正常に機能しましたが、現在、日付と数字に関する多くの問題に直面しています。

主な問題は SQL Server のようです。実際、SQL SERVER はエラーをスローします。メソッド ParseExact を使用して日付の問題を解決しました。

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

10進数の場合、「。」を交換する必要があります。アプリケーションを機能させたい場合は、「、」(文化によって異なります):

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

繰り返しますが、エラーは SqlServer によって生成されます。文化を一度に設定する方法はありますか?

PS: EN サーバーは GoDaddy Hosting です。

更新: 問題は純粋な SQL Server です。実際、私のサーバーをチェックすると、最初のサーバーに「,」と「.」が見つかりました。お金と小数の区切り記号として 2 番目のもの。行く

前のクエリで、SQL サーバーのカルチャを変更できました。しかし、問題はまだ残っています。

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に従ってdatetimeを挿入/フェッチしているときにコードを変更します

于 2012-08-22T12:33:52.050 に答える
0

これは何を返しますか?

 select @@LANGID, @@LANGUAGE

イタリアンと言えば、

 set language us_english

(または何でも...)

于 2012-08-22T09:55:19.770 に答える
0

SQL サーバーのカルチャを毎回変更するのではなく、

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