OracleDATEとTIMESTAMPの違い


92

Oracle DATE型とTIMESTAMP型の違いは何ですか?どちらにも日付と時刻のコンポーネントがありますか?また、これらの日付タイプに対応するJavaのタイプは何ですか?


3
TIMESTAMPDATE分数秒の精度が追加されていることを除いて、と同じです。
NullUserException 2013年

5
最大の違いDATEは、秒単位で正確であり、秒の端数がないことです。TIMESTAMP分数秒があります。秒単位の小数点以下の桁数はサーバーOSによって異なります。たとえば、Windows 7マシンのOracleはタイムスタンプに小数点以下3桁を返しますが、クライアントの巨大なSolarisボックスは6桁を返します。タイムスタンプは、特定のタイムゾーンを保持することも、共通のタイムゾーンに正規化することもできます。詳細については、ここに移動して「TIMESTAMP」を検索し、少し実験してください:)
Ed Gibbs

回答:


98

DATEとTIMESTAMPのサイズは同じ(7バイト)です。これらのバイトは、世紀、10年、年、月、日、時、分、秒を格納するために使用されます。ただし、TIMESTAMPでは、小数秒(11バイト)やタイムゾーン付きの小数秒(13バイト)などの追加情報を格納できます。

TIMESTAMPは、Oracleに準拠したANSIとして追加されました。それ以前は、DATEのみでした。

通常、DATEを使用する必要があります。ただし、時間の精度が必要な場合は、TIMESTAMPを使用してください。

また、Javaについては、Oracle JDBCドライバーのoracle.sql.DATEクラスが、Oracle Date / Timestampデータ型とJavaクラスjava.sql.Date、java.sql.Time、およびjava.sql.Timestampの間の変換を提供します。


1
警告の言葉:残念ながら、デフォルトでは、OracleでDATE列をクエリすると、「日」のみが返されるように見えますが、TO_TIMESTAMP(DATE_COLUMN_NAME)のようにキャストすると、より正確に返されます。これはどういうわけかjdbc / hibernateのデフォルトではありませんが、少なくともここにはありません。
rogerdpack 2013年

6
「一般的にはDATEを使用する必要があります」-しかし、なぜ、正確に?
siledh 2013

4
を使用する必要がありますTIMESTAMP WITH TIME ZONE。そうしないと、夏時間があいまいな時間を導入します。
kmkaplan 2015

15
DATE型にTIME情報が含まれているのは、非常に紛らわしいと思います。それはその言葉が意味するものではありません。
daddy32 2016

2
@ Daddy32TIMESTAMPは約20年後に追加されましたDATE。彼らは本当に戻って変更することができませんでしたDATE
ウィリアムロバートソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.