私がSystem.currentTimeMillis()メソッドを使用して作成したjava.sql.Timestampは、MySQLデータベースに1970-01- 01 01:00:00。私が作成していjava.sql.TimeStampとmysqlデータベースを使用して奇妙な動作が発生しました
2つのタイムスタンプは、私が実行しようとしている監視タスクの開始と終了をマークしている、どのような次の行動が
final long startTime = System.currentTimeMillis();
while(numberOfTimeStepsPassed < numTimeStep) {
/*
* Code in here
*/
}
final long endTime = System.currentTimeMillis();
return mysqlConnection.insertDataInformation(matrixOfRawData, name,Long.toString(startTime),
Long.toString(endTime), Integer.toString(numTimeStep),
Integer.toString(matrixOfRawData[0].length), owner,
type);
を発生し、ここでのコードであるコードからexceptsでありますMySQLデータベース
public String insertDataInformation(final double [][] matrix,
final String ... params) {
getConnection(lookUpName);
String id = "";
PreparedStatement dataInformationInsert = null;
try {
dataInformationInsert =
databaseConnection.prepareStatement(DATA_INFORMATION_PREPARED_STATEMENT);
id = DatabaseUtils.createUniqueId();
int stepsMonitored = Integer.parseInt(params[STEPS_MONITORED]);
int numberOfMarkets = Integer.parseInt(params[NUMBER_OF_MARKETS]);
dataInformationInsert.setNString(ID_INDEX, id);
dataInformationInsert.setNString(NAME_INDEX, params[0]);
dataInformationInsert.setTimestamp(START_INDEX, new Timestamp(Long.parseLong(params[START_INDEX])));
dataInformationInsert.setTimestamp(END_INDEX, new Timestamp(Long.parseLong(params[END_INDEX])));
dataInformationInsert.setInt(STEPS_INDEX, stepsMonitored);
dataInformationInsert.setInt(MARKETS_INDEX, numberOfMarkets);
dataInformationInsert.setNString(OWNER_INDEX, params[OWNER]);
dataInformationInsert.setNString(TYPE_INDEX, params[TYPE]);
dataInformationInsert.executeUpdate();
insertRawMatrix(matrix, id, Integer.toString(stepsMonitored), Integer.toString(numberOfMarkets));
} catch (SQLException sqple) {
// TODO Auto-generated catch block
sqple.printStackTrace();
System.out.println(sqple.getSQLState());
} finally {
close(dataInformationInsert);
dataInformationInsert = null;
close(databaseConnection);
}
return id;
}
にタイムスタンプ及び他のデータを挿入するために使用されるコードの重要な行は、次のとおり
dataInformationInsert.setTimestamp(START_INDEX, new Timestamp(Long.parseLong(params[START_INDEX])));
dataInformationInsert.setTimestamp(END_INDEX, new Timestamp(Long.parseLong(params[END_INDEX])));
タイムスタンプ上のJavaDocs(http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/Timestamp.html)によれば、1970年1月1日以降、ミリ秒で時間がかかり、簡単な印刷テストでこれが確認されています。私が探しています何
は次のとおりです。
java.sql.Timestamp
てMySQLデータベースのタイムスタンプを保存しようとしているこの現象の理由は?- この現象に対する解決策はありますか?
- 可能な代替手段はありますか?
- 改善がありますか?
EDIT: がSTART_INDEXとEND_INDEXが何であるかを含めるように依頼されて:
private static final int END_INDEX = 4;
private static final int START_INDEX = 3;
は、オリジナルのポストにそれらを入れていないために謝罪します。
なぜ値を文字列に変換して戻していますか?なぜ、強く型付けされた方法で各パラメータを取るだけではないのですか? –
私はもともとコードを書いていたときに、メソッドに必要なパラメータの数が不明なので、Stringを使用することにしました...その時私は時間を節約することを誓っています:) – OpelMac
すぐにそれを変更することを強くお勧めします。注文に依存しないように、パラメータには常に別の「ビルダー」を使用できます。現在、START_INDEXなどが何であるかわからないので、問題は*そこにある可能性があります。わかりません。 –