Javaでカウントを取得した後に 'timeStamp'をdate
に変換するにはどうすればよいですか?
私の現在のコードは次のとおりです。
public class GetCurrentDateTime {
public int data() {
int count = 0;
Java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
Java.sql.Date date = new Java.sql.Date(timeStamp.getTime());
System.out.println(date);
//count++;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", "");
PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()");
ResultSet result = statement.executeQuery();
while (result.next()) {
// Do something with the row returned.
count++; //if the first col is a count.
}
} catch (Exception exc) {
System.out.println(exc.getMessage());
}
return count;
}
}
これは私のデータベースです:
ここで私が得た出力は2012-08-07 0でしたが、同等のクエリは3を返します。なぜ私は0を得るのですか?
スタンプのgetTime()
値をパラメータとして新しいDate
オブジェクトを作成するだけです。
これが例です(私は現在の時刻のタイムスタンプの例を使います):
Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);
// timestamp to Date
long timestamp = 5607059900000; //Example -> in ms
Date d = new Date(timestamp );
// Date to timestamp
long timestamp = d.getTime();
//If you want the current timestamp :
Calendar c = Calendar.getInstance();
long timestamp = c.getTimeInMillis();
ただ
Timestamp timestamp = new Timestamp(long);
Date date = new Date(timestamp.getTime());
私はずっと前からこれを探してきました、それが Eposhコンバーター 簡単にすることがわかります:
long Epoch = new Java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("01/01/1970 01:00:00").getTime() / 1000;
またはその逆:
String date = new Java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Java.util.Date (Epoch*1000));
まず第一に、あなたはPreparedStatement
を使うことの利点を利用していません。まずPreparedStatement
を次のように修正することをお勧めします。
PreparedStatement statement = con.prepareStatement("select * from orders where status=? AND date=?")
その後、statement.setXX(param_index, param_value)
を使用してそれぞれの値を設定できます。 timestamp
への変換については、次のjavadocをご覧ください。
PreparedStatement.setTimeStamp()
タイムスタンプ
お役に立てれば!
Timestamp tsp = new Timestamp(System.currentTimeMillis());
Java.util.Date dateformat = new Java.util.Date(tsp.getTime());
他の回答はタイムゾーンにとらわれず、現実のアプリケーションでは対応できないため、対応することが義務付けられています。タイムスタンプとJVMが異なるタイムゾーンを使用しているときにタイムスタンプから日付への変換を正しくするには、Joda TimeのLocalDateTime(またはJava 8のLocalDateTime)を次のように使用します。
Timestamp timestamp = resultSet.getTimestamp("time_column");
LocalDateTime localDateTime = new LocalDateTime(timestamp);
Date trueDate = localDateTime.toDate(DateTimeZone.UTC.toTimeZone());
以下の例では、タイムスタンプがUTCであると仮定しています(通常データベースの場合と同様)。タイムスタンプが異なるタイムゾーンにある場合は、toDate
ステートメントのタイムゾーンパラメータを変更します。
クエリで何を選択しようとしているのかはわかりませんが、引数なしのUNIX_TIMESTAMP()
は現在時刻を返すことに注意してください。おそらく引数として有効な時間を指定するか、条件を変更する必要があります。
編集:
これは、質問に基づく時間限定クエリの例です。
PreparedStatement statement = con
.prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
statement.setDate(1, new Java.sql.Date(date.getTime()));
EDIT:タイムスタンプ列
タイムスタンプの場合はJava.sql.Timestamp
と PreparedStatement.setTimestamp() を使用してください。
PreparedStatement statement = con
.prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
Timestamp timestamp = new Timestamp(date.getTime());
statement.setTimestamp(1, timestamp);
Androidでは、非常にシンプルです。ただCalenderクラスを使用してcurrentTimeMillisを取得してください。
Timestamp stamp = new Timestamp(Calendar.getInstance().getTimeInMillis());
Date date = new Date(stamp.getTime());
Log.d("Current date Time is " +date.toString());
JavaでSystem.currentTimeMillis()を使用して現在のタイムスタンプを取得します
new Date(timestamp.getTime())
は動作するはずですが、新しい空想のJava 8の方法(よりエレガントでタイプセーフであり、新しい時間クラスを使用するのに役立つ場合があります)はDate.from(timestamp.toInstant())
を呼び出すことです。
(Timestamp
自体がDate
のインスタンスであるという事実に頼らないでください。 別の答え のコメントにある説明を参照してください。)
このJavaコードを使ってみてください。
enter code here
Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
DateFormat f1 = new SimpleDateFormat("yyyy/MM/dd");
String d=f.format(date);
String d1=f1.format(date);
System.out.println(d);
System.out.println(d1);
既存のJava.util.Date date
があるとします。
Timestamp timestamp = new Timestamp(long);
date.setTime( l_timestamp.getTime() );
このメソッドを使用して、特定の地域のタイムスタンプとタイムゾーンから日付を取得できます。
public String getDayOfTimestamp(long yourLinuxTimestamp, String timeZone) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(yourLinuxTimestamp * 1000);
cal.setTimeZone(TimeZone.getTimeZone(timeZone));
Date date = cal.getTime();
}