-2

SQLの組み込み型には、DateTime型よりもメリットがありnvarcharますか?

もしあなただったら、どれを使いますか?

SQLServerデータベースに日付を保存する必要がありますが、どちらが優れているのか、なぜ優れているのか知りたいです。

また、たとえば日付を文字列リテラル(つまり)として保存するとどうなるか知りたいnvarcharですか?検索に時間がかかりますか?それとも、パフォーマンスの点で同じですか?

そして最後の質問です。C#アプリケーションからTYEのSQLフィールドに日付を送信するにはどうすればよいDateTimeですか?c#s DateTimeと何か違いはありますか?

4

6 に答える 6

3

dateある理由で日付タイプが与えられていますが、なぜそれを使用しないのですか?

「2012年3月2日」をテキストフィールドに保存するとどうなりますか?3月2日ですか?2月3日ですか?

dateまたはdatetimeフィールドに日付を格納し、事後の日付の書式設定を行います。

編集

のような日付を保存する必要がある場合1391/7/1、選択肢は次のとおりです。

  • SQL Server 2008以降を使用していると仮定すると、datetime2データ型を使用します。1753/01/01より前の日付を許可します(これがでdatetime停止します)。
  • SQL Server 2005以前を使用している場合は、日付をローマ暦の日付として保存し、アプリケーションで日付/時刻関数を使用して日付と時刻をFarsiカレンダーに変換します。
于 2012-09-21T18:09:44.650 に答える
2

正しいデータ型を使用してください(date/datetime/datetime2バージョンと時間コンポーネントの要件によって異なります)。

利点は、文字列として保存するよりもコンパクトなストレージです(特にnvarchar、これは2バイトであるため)。2月30日などの無効な日付に対する検証が組み込まれています。正しくソートします。日付関数を使用するときに、とにかく正しいデータ型にキャストバックする必要がなくなります。

于 2012-09-21T18:10:54.160 に答える
2

DateTime値を保存していて、それに基づいて日付ベースの計算を実行する予定の場合は、DateTimeを使用します。

日付を文字列(varchars)として保存すると、さまざまなロジスティクスの問題が発生しますが、その中でも特に、日付を適切な形式でレンダリングする必要があります。繰り返しますが、それはDateTimeを支持してお辞儀をします。

于 2012-09-21T18:11:50.997 に答える
1

さまざまな関数を直接使用できるので、DateTimeを使用します。文字列はそれほど面倒ではありませんが、何かを実行するたびにデータをキャストする必要があります。

両方のタイプのフィールドを検索する際に実際のパフォーマンスの差異はないため、日付値を操作する場合は、文字列よりもDateTimeを使用する方が適切です。

于 2012-09-21T18:11:53.507 に答える
1

他のデータ型と同様に日時データ型が理由で提供されていることを認識し、データを明確に表すデータ型を使用する必要があります。これに加えて、日時データ型に固有のすべての機能/操作を取得できます。

最大の利点の1つは、データ型としてnvarcharを使用する場合は直接不可能な、データの正しい並べ替えです。現在並べ替えが必要ないと思われる場合でも、将来的にはこれが役立つ時期があります。

また、日付の検証はあなたが恩恵を受けるものです。保存されている日付形式、つまりdd/mmまたはmm/ddなどの混乱はありません。

于 2012-09-21T18:16:25.487 に答える
1

主題について多くの議論があります。この特定の主題のDateTimeまたはnvarcharについて、SQLCentralフォーラムに良い投稿があり ます。

つまり、nvarcharはdatetimeの2倍長いため、より多くのスペースが必要になり、長距離では、nvarcharに影響を与えるアクションが遅くなります。いくつかの検証の問題やその他多くの問題が発生します。

于 2012-09-21T18:17:26.860 に答える