MySQL (バージョン: 5.1.50) の時刻と日付の型は次のとおりです。
日時 8バイト xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
タイムスタンプ 4バイト xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01 ~ 2038
日付 3 バイト xxxx-xx-xx 1000-01-01 ~ 9999-12-31
年 1 バイト xxxx 1901 ~ 2155
時間 3 バイト xx:xx:xx -838:59:59 ~ 838:59:59 (時間の足し引きに対応するため)
Java (1.6)で時刻と日付の型を保存できるクラスは主に次のとおりです。
java.util.Date
java.util.Calendar
java.sql.Date
java.sql.Time
java.sql.タイムスタンプ
以前に mysql からクエリされた時刻と日付の型は、java.util.Date型に配置されます。これは一連の問題を引き起こします。第一に、このクラスが提供する時間演算関数が少なすぎるため、通常、動作するにはjava.util.Calendarに変換する必要があります。第二に、たとえjava.util.Calendarが使用されていても、それは機能しません。非常に便利です。単純なアイデアを実現するには多くのコードを記述する必要がありますが、java.util.Dateのデータ内容は xxxx-xx-xx xx:xx:xxであり、時間が必要なく、日付だけが必要な場合もあります。データベースから取得した日付型をこのクラスに配置すると、時刻の位置に現在時刻が自動的に追加されます。これにより、データベース内では 2 つの日付は元々等しくなりますが、これらを取り出してこのクラスに配置すると等しくなくなります。時間誤差を考慮するのは頭の痛い問題です。
Java は、mysql と簡単に対話できるように 3 つのデータ型を提供します
java.sql.Date
java.sql.Time
java.sql.タイムスタンプ
これらはすべてjava.util.Date を継承しており、これはクラスを単純化したものとみなされ、データベースとの対話に非常に適しています。
===========データベースへの Java インジェクション ==========
java タイプ mysql タイプ 成功か否か
日付 日付 はい日付
時刻 いいえ日付タイムスタンプなし 日付 日時 いいえ日付いいえ 時刻 時刻 はい 時刻タイムスタンプ いいえ時刻 日付時刻 いいえ タイムスタンプ 日付 はい タイムスタンプ 時刻 はい タイムスタンプ タイムスタンプはいタイムスタンプ 日付時刻 はい======= ===
Java インジェクション データベースの終了========
一般規則、A が B を完全に含む場合、A は B にデータをインジェクトできます。そうでない場合はエラーが報告されます。
========== データベースから Java に抽出 ==========
mysql类型 java类型 成与否
date date yes
date time yes --------------缺少的部分使用历元
date timestamp yes --------------缺少的部分使用历元
time date yes --------------缺少的部分使用历元
time time yes
time timestamp yes --------------缺少的部分使用历元
timestamp date yes
timestamp time yes
timestamp timestamp yes
datetime date yes
datetime time yes
datetime timestamp yes
==========end 从数据库提取到java=======
不会出错,缺少的部分使用历元,而不是当前日期时间
null to db(null) =====> 也是null
null to db(not null)=======> 数据库报错
db(null) to java==========> 如果单字段出来,则整个entity都是null,如果带着其他不是null的字段出来,则可以实例化entity,本身字段依然是null
db(not null) to java==========> 如果包含日期,则报错,否则为000
最优解决方案,定义成可以为null
java.sql时间系统的运算系列
after,before
compareTo原小于参数返回<0,等于返回=0,大于返回>0
优点:于数据库同类型,可以方便传输(无论是从DB到src还是反方向),方便比较大小
缺点:缺少运算单元,不适合时间跳跃的运算和间隔的运算
总结:calendar具有强大的跳跃运算和间隔运算能力,在需要的时候,可以将sql系列的时间转成calendar。
先设置calendar为历元,然后从sql系列时间中转换,最后再转回sql系列时间。
calendar只用于时间有跳跃的转换,对比运算统一使用sql系统,这样代码将更清晰
日付とカレンダーを GMT に初期化する方法
new date(0)
Calendar.setTimeInMillis(0)
SQL シリーズの時間
静的 valueOf new XX(0) を使用してエポック新 XX(年 + 1900、月 + 1、日、時、分、秒を
取得)
、nano) は廃止され、作成されています
toString または SimpleDateFormat
記事のソース: http://blog.csdn.net/weinianjie1/article/details/6310770