日付と時刻を保存したい場合、それらを別の日付と時刻に保存するか、単一の日時を使用する方が良いですか?
単一の日時の代わりに日付と時刻を使用する必要があるのはいつですか?
日付または時刻を使用してクエリをフィルター処理したいと考えています。
日付と時刻を保存したい場合、それらを別の日付と時刻に保存するか、単一の日時を使用する方が良いですか?
単一の日時の代わりに日付と時刻を使用する必要があるのはいつですか?
日付または時刻を使用してクエリをフィルター処理したいと考えています。
普遍的な瞬間であろうと、誰かのローカルカレンダーの特定の日時であろうと、ある瞬間について話しているときは、datetime
. オブザーバーに関係なく、正確な瞬間について話していることを確認したい場合は、datetimeoffset
.
だけを保存している場合はdate
、時間コンポーネントのない日付を意味し、「この日付のいつでも」を意味します。
だけを保存している場合はtime
、日付コンポーネントのない時間を意味します。つまり、「任意の日付のこの時間」または「他の手段によって決定された日付のこの時間」を意味します。
date
aと a の両方をtime
ほぼ同じものとして、同じ行に配置することに実際的な目的はありません。そのために a を使用するだけdatetime
です。
SQL Server 2008 では日付と時刻のデータ型があるため、これは問題になりません。
それが良い選択であるかどうかは、ビジネスとデータのクエリ方法によって異なります。
たとえば、任意の日の午後 1 時から午後 2 時までのすべての注文を知りたい場合は、分離さDate
れたTime
列を使用すると速くなります。
意図的に時刻を気にしない場合は、このデータを日付データ型として格納する方が効率的です。お客様の誕生日のコラムを考えてみてください。今回は、これを使用するケースはあまり思いつきません。時刻が付加されている場合 (多くの場合バグ)、比較を行うために convert ステートメントを介してこれを削除する必要があります。これらの値が必要ない場合は、追加のスペースも消費します (8 バイトに対して 3 バイト)。
これは、id を tinyint などではなく bigint として持つステータス コード テーブルを持つことに似ていると思います (使用する予定のステータス コードの数によって異なります)。
そのデータが必要になる可能性が高いと思われる場合は、datetime を使用し、それ以外の場合は date を使用します。
日付と時刻の分離については何も素晴らしいことはありませんが、
日付と時刻を同じ列に保存した方がよいでしょう。
ここで彼らは同じ問題について議論しましたそれをチェックしてください :
クエリで日付と時刻を別々に取得することもできます
SELECT
CONVERT(VARCHAR(10),GETDATE(),111) as DatePart,
convert(varchar(15), getdate(), 108) TimePart