Mysql時間タイプ

1399 ワード

mysqlにおける時間データ型
mysqlは、DATETIME、DATE、TIMESTAMP、TIME、YEARの5つのデータ型を提供し、時間を格納します.彼らの範囲は次のとおりです.
を選択します.
最小値
最大値
YEAR
1901
2155
TIME
-838:59:59
838:59:59
DATE
1000-01-01
9999-12-31
TIMESTAMP
不定
不定
DATETIME
1000-01-01 00:00:00
9999-12-31 23:59:59
TIMESTAMP
TIMESTAMPタイプが不定なのは、MySQLバージョンとサーバが実行するSQLモードによって、タイプ属性が不定であるためです.一般的な保存日時は、DATETIMEを使用します.
Y 2 K問題
Y 2 K問題とは,年を2桁で表すと,システムが具体的にどの年なのか分からないことであり,例えば72は1972と2072を表すことができる.mysqlは、デフォルトの処理方法があるため、この問題は存在しないと主張しています.
00~69の範囲の年間値は2000~2069に変換されます.70~99の範囲の年間値は1970~1999に変換されます.
23:59:59のピット
開始時間と終了時間を格納します.一般的には00:00~23:59:59ですが、処理には特に注意してください.Javaが当日終了時刻コードクリップを取得した場合:
cal.setTime(day);
cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getMaximum(Calendar.MILLISECOND));

例えば2017-08-08、取得は2017-08-08 23:59:59で、sql文を印刷して見たのもこの値ですが、挿入後にデータベースが見えたのは2017-08-09 00:00:00!問題はDATETIMEの時間範囲で、私たちの時間はミリ秒の値があるので、翌日になりました.ミリ秒を最小値に設定します.
// mysql        
cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND));

タイム・タイプ記憶推奨方式
時間をlong型で保存することをお勧めします.ミリ秒レベルに保存できます.境界値の処理も細かくなり、サイズと差分値の比較も直感的になります.