3

シナリオ: ストアド プロシージャは、datetime パラメーターとして DateTime.Now 値などを含む DateTime をコードから受け取ります。ストアド プロシージャは、行の datetime の日付部分のみを格納する必要がありますが、時間間隔での検索や日付に基づくレポートの作成などのために、日付に関連するすべての演算を保持します。

いくつかの方法があることは知っていますが、パフォーマンスと無駄なスペースを考慮して、どの方法が良いでしょうか?

4

5 に答える 5

4

ビジネスロジックは、プロシージャの外部で処理する必要があります。procsジョブは、渡されたデータを保存することです。要件が時刻ではなく日付のみを格納することである場合、BL /DLはDateTime.Now**。Date**(または同等の...基本的にはDateTimeオブジェクトのDate部分)を渡す必要があります。

何らかの理由でコードを制御できない場合は、常にconvert(varchar(10)、@ YOURDATETIME、101)があります。

于 2008-09-17T04:33:24.787 に答える
0

時間=真夜中の日付を保存します

編集:私はMSSQLServerを想定していました

于 2008-09-17T04:24:19.283 に答える
0

基本的に、DateTimeオブジェクトのDate部分のみを格納します。つまり、データのクエリをどのように処理するかに関係なく、返される日付は常に00:00:00に設定されます。

データベースがこの情報をドロップするため、このシナリオでは(元のDateTimeオブジェクトがそれらを使用していても)時間関連の関数は役に立ちません。

データベースから返される各日付の午前0時を想定する必要がありますが、日付関連の計算は引き続き適用されます。

于 2008-09-17T04:29:54.030 に答える
0

SQL Server 2008 には、時刻を格納しない日付のみの型 (DATE) があります。アップグレードを検討してください。

http://www.sqlteam.com/article/using-the-date-data-type-in​​-sql-server-2008

于 2008-09-17T05:07:52.143 に答える
0

Oracle で作業している場合は、ストアド プロシージャ内で日時に TRUNC 関数を使用します。これは日付部分のみを返します。

于 2008-09-17T18:39:09.043 に答える