時間部分がオプションの場合、データベースに日時を保存する方法は?

StackOverflow https://stackoverflow.com/questions/1016546

質問

単一のタイムスタンプ/日付/時刻フィールドまたは個別の日付と時刻フィールドに保存する必要がありますか?単一のタイムスタンプフィールドとして保存することを好みますが、ユーザーが時間部分を入力しなかった時期を知る必要があります。

これをデータベースに最適に保存する方法は?私はpostgresqlを使用しています。

役に立ちましたか?

解決

これが悪い考えである理由は間違いなくあります。選択が制限される理由もあります。単一のデータ項目であり、2つのフィールドがある場合はタイムゾーンを保存できないというより実用的な理由のため、これは悪い考えです。

前述のとおり、nullは2つのフィールドを使用することの明らかな利点です。

単一の日時フィールドを使用し、ユーザーが時間を入力したかどうかを示すフラグを保存することも検討できます。これはブール値フラグである可能性があります。ただし、このデータをどのように使用するかについて考える必要があります。datetimeフィールドに日付のみを入力すると、時刻コンポーネントが真夜中に設定されます。これは、並べ替えと選択に影響します。さらに、タイムゾーンを保存している場合は、データを使用するときに非常に注意する必要があります。

時刻が入力されたかどうかを知るという要件を満たすには、2つのフィールドが必要です。ただし、2番目のフィールドを時間にする必要はありません。

他のヒント

明白な答えは、2つの別々のフィールドを使用することです。 NULL値を使用できます。

1つのフィールドを使用することを選択した場合、「リアルタイムに入力しなかった」ことを示すマジックタイムパーツを選択する必要があります。 >

また、日付と時刻の部分を頻繁に別々に使用する場合は、別々のフィールドを使用することも便利です。それ以外の場合は、フィールドの関連部分を抽出するために選択関数を使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top