2011-03-04 3 views
5

DateTimeの値をlongとして保存すると、簡単に生活できますか? null DateTime値を使用して作業する場合、常にNULL DateTimes、無効なDateTimesなどを格納するか取得するかにかかわらず、常に問題があるようです。データベースにDateTimesをLong(Ticks)として保存する必要がありますか?

longのデータ型で作業することをお勧めします。なぜなら、ティックからいつもDateTimeを作成できるからですか?

編集: 私はSqlServerとMySqlを使用しています。 SqlDateTimeは.net由来のDateTimeです。 3つのプラットフォームの間には、有効なDateTimeの違いがあります。どのようにこれらの違いに対処していますか?

+2

日時は理由があります:それを使用してください。 –

+0

DateTimeは便宜上、IMOです。私は単にDateTime値をデータベースのティックとして保存することを検討しています。データベースからlongを取得すると、ティック数からDateTimeを作成する必要があります。私はそれに問題は見られません。 – IAbstract

+2

'long 'を使って' datetime'の問題を解決する方法はありますか? –

答えて

7

私はそれが個人的な好みにあると思う。私はいつもdatetime型で動作し、それらには何の問題もありません。

意味的ではあるものの、長いものとして保存すると、それらはもはや日付ではありません。金曜日に追加されたすべてのアカウントを選択するためにクエリを実行したいと思ったことがある場合は、それを実行するためにいくつかのフープを飛ばしなければなりません。

+5

死と破壊の燃焼場。 – Max

4

個人的に何らかの理由で考えることはできません。データベースはDateTime自身をサポートしており、長持ちしていると、足で自分を撮影する可能性があります。たとえば、「午前3時から午後6時の間にすべての行を取得する」というクエリを実行できる必要があるとします。これらをティックとして保存する場合は、データベースのDateTimeに変換する必要があります。などのグループ化、並べ替え、フィルタリング、などの多くの他の操作を、妨げる可能性ダニとして

それらを保存

あなたは、このようなタイムゾーンなど、データベース内の日付時刻、とのニュアンスを持っている場合は、それを強く日時にを正規化することをお勧めします特定のタイムゾーン(UTCなど)チームがデータベース内のDateTimeに直面する多くの問題は、TimeZoneを正規化しないなど、非営利の入力が原因であることがよくあります。それをダニとして保存するには同じ問題が残っています。

+0

クエリの優れた点:+1 – IAbstract

2

いいえ、datetime列を使用してください。

があり常にnullのDateTimeで作業するときに問題があるように見えるあなたの列がNULL可能である場合

値、および列のタイプは、あなたにも問題がありますdatetimeあるとき、あなたはいくつかの理由で困難を抱えています列の種類がlongの場合あなたはdatetimeの列に無効な日付時刻を取得するにはどうすればよい

...無効な日付時刻

?最初にdatetime列を使用する目的の1つは、データの挿入が許可される前に一種の検証が行われることです。裸のlongを使用すると、無効な日付時刻を取得する可能性が非常に高くなります。

最後に、longを使用すると、単純なSQL(select * from table)でデータベースを表示すると判読不能な結果が発生します。

+0

SqlServer、MySql、および.Netが無効なDateTime値と見なすものとの違いがあるようです... – IAbstract

+0

@IAbstract、本当にあなたの質問に特定のものが役立ちます。特定のデータベースについて質問していますか? –

+0

私はこの質問をした時点で、私はSQL ServerとMySQLからデータを引き出していました。私はすべての仕様を思い出さないが、DateTimeはすべての3つのプラットフォーム(.Netを含む)から再生されていた。したがって、DateTimeをlongとして保存することは "普遍的な"だろう。私は、(仲介者として)物事の.Net側で自分の人生を楽にしていたデータベースのうちの1つだけを変更する権威とアクセス権を持っていたと私は信じている。それ以外の場合は、必要に応じて日付関数/ procを使用してそれぞれのプラットフォームに応じて日付を表示できるため、* DateTime *列の長い値の読みやすさには心配していませんでした。 – IAbstract

2

場合によっては、はい。 Sqlは日付時刻よりも精度の低い日付時刻を格納します。これは、永続化された値と取得された値が元のオブジェクトとわずかに異なるDateTime値を持つ可能性があることを意味し、順序付けや比較に問題が生じる可能性があります。

関連する問題