2017-07-19 8 views
1

SQL Serverのデフォルトの日付形式/言語と、asp.netアプリケーションのStringとしてレンダリングされたDateTimeオブジェクトとの間には何らかの関係がありますか?SQL Serverのデフォルトのdateformat/languageは、DateTimeオブジェクトのtoStringレンダリングに影響しますか?

既定のSqlServerの日付形式は、作成したレポートのDateTime文字列に影響を及ぼしますか? asp.netアプリケーションはEntityFrameworkを使用してデータを取得しています。 MSDNを引用

+0

日付にはフォーマットがありません。彼らはタイムゾーンを持っているかもしれませんが、フォーマットはUI目的のためだけです。 – DavidG

+1

私は日付がデータベースからasp.netアプリケーションに正しく解釈されると思います。しかし、あなたのコンピュータの '地域'設定は、DateTimeオブジェクトを文字列にレンダリングするときに影響します(明示的にフォーマットしない限り)。 – hsoesanto

答えて

0

のDateTime toStringメソッドは、指定された 形式と現在のカルチャの書式設定規則を使用して、同等の文字列表現に現在のDateTime オブジェクトの値を変換します。

これは意味しません。レンダリングはアプリケーションカルチャ設定の影響を受けますので、それに応じて日付に応じた時間が表示されます。

現在の培養培地は、実行中のスレッドの特性である

(再びMSDN上など)。この読み取り専用 プロパティは、CultureInfoオブジェクトを取得することに相当し、 がThread.CurrentCultureプロパティによって返されました。スレッドが開始されると、その カルチャが最初にWindows GetUserDefaultLocaleName関数を呼び出すことによって決定されます。

ほとんどの場合、これはユーザーのオペレーティングシステムのカルチャ設定から派生した設定です(ここでは、私はここでショートカットをとっています)。しかし、これは、web.configファイルでoverridden(または他の場所)であるかもしれない:バイナリとして

<globalization uiCulture="en" culture="en-US" /> 
+0

ok、さらに進んでみましょう。「現在の文化」はどこから来ていますか? – AngJobs

+0

私はすでに私の質問への答えを見ました、それは "地域"のOS設定 – AngJobs

+0

@AngJobsから来ています - はい、それは異なって設定されていません。驚きを避け、設定を制御するためにMSDNの詳細をよく知っておくことをお勧めします。 –

2

SQL Serverの店datetimeタイプ。これは8バイトを使用します。最初の4バイトは日付用で、2番目の4バイトはその時間用です。

このタイプは、CLR側のSystem.DateTimemappedであり、このSystem.DateTimeはどちらの形式を持っていませありません。それはちょうど日付と時刻の値を持っています。これは、Ticksに基づいています。wihchは、グレゴリオ暦で0001年1月1日の12:00:00真夜中から経過した100ナノ秒の間隔です。

ご覧のとおり、どちらも実際には数値です。一方

、「フォーマット」のコンセプトあなたは、通常のC#側でDateTime.ToString方法およびSQL Server側のFormat方法で行われ、その原文(別名文字列)表現を取得するときにのみが適用されます。

あなたが正しいデータ型(参照:Bad habits to kick : choosing the wrong data type)を選択した場合ので、あなたのSQL ServerでのごSystem.DateTime値のために(通常はdatetimeまたはdatetime2で行う)、なし、SQL Serverのデフォルトの日付書式/言語は、そのフォーマットに影響を与えません。レポート用に生成されます。あなたはDateTime値に直接レポートを養うとき

は、(何のカスタムフォーマットなどが存在しない場合。)ToString()メソッドが自動的に呼び出され、この方法は、あなたのCurrentCulture設定で標準The "G" Format Specifierを使用しています。

初心者の方は、DateTimeインスタンスとその文字列表現(形式)の違いを理解することが重要です。実際にはです。

関連する問題