3

これは私のデータベースです: ここに画像の説明を入力してください

ここでは、クエリの現在の日付+ステータス= Q情報を確認し、カウント値を取得する必要があります。

これは私のコードです:

public class TodayQ {
    public int data() {
         int count=0;
        Date date = new Date(timestamp);
DateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd");
System.out.println( dateFormat.format (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;
    }

}

ここでは、日付を(yyyy-mm-dd)形式で編集する必要があります。これで出力が得られました。しかし、データベースでタイムスタンプを使用したいと思います。では、Javaでタイムスタンプを日付に変換する方法を説明します。そのコードを私のコードでどのように使用しますか?

4

6 に答える 6

4

mysql関数を使用して同じことを実現できます。次のクエリで目的の出力が得られることを願っています。

select * 
from orders
where status='Q' AND 
      date_format(from_unixtime(date),'%Y-%m-%d') = current_date;
于 2012-08-08T10:33:14.440 に答える
2
Date date = new Date(timestamp);

タイムスタンプは長い変数です

于 2012-08-03T11:21:25.077 に答える
1

タイムスタンプがミリ秒単位の時間であると仮定すると、次のように java.util.Calendar を使用してタイムスタンプを日時に変換できます。

java.util.Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
java.util.Date date = cal.getTime();
于 2012-08-03T11:21:25.220 に答える
1

表示されている整数値は、エポックの開始からの UNIX の秒数のようです (これは 1970-01-01T00:00:00Z です) -> http://en.wikipedia.org/wiki/Unix_epoch

mysql JDBC ドライバーがこのフィールドの変換を処理するかどうかはわかりません。その場合、その値を取得するための推奨される方法は次のとおりです。

java.sql.Timestamp ts = result.getTimestamp( columnNumber );

Timestamp は java.util.Date を拡張するため、通常の java.util.Date が必要な場所で使用できます。

何らかの理由でこれが目的の結果を生成しない場合は、列の値を取得しlong、値をミリ秒に調整します。Java のエポックと UNIX のエポックが同時に開始されるため、ここでは幸運です (Java のエポックはより正確です)。

long ts = result.getLong( columnNumber ) * 1000L;

java.util.Date date = new java.util.Date( ts );
于 2012-08-03T12:50:26.000 に答える
0

タイムスタンプを yyyy-mm-dd で出力するには:

Date date = new Date(timestamp);
DateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd");
System.out.println( dateFormat.format (date));

アップデート

続行方法のヒントは次のとおりです。

public static int data() {
    int count = 0;
    Date now = Calendar.getInstance().getTime();
    System.out.println("TODAY IS:"+now.getTime()); //TODAY IS:1344007864862

    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");

        PreparedStatement statement1 = (PreparedStatement) con.prepareStatement("SELECT * FROM ORDERS WHERE STATUS = 'Q' AND DT= "+now.getTime());
        ResultSet rs1 = statement1.executeQuery();
        while (rs1 .next()) {
            count++; //A HIT IS FOUND
        }
    } catch (Exception exc) {
        System.out.println(exc.getMessage());
    }
    return count;
}

明らかに now.getTime() は、日付がnow変数に取り込まれた実際のミリ秒を返します。これからは、数学はすべてあなたの実装次第です。

真夜中 (2012 年 10 月 5 日 00:00:00) に Calendar オブジェクトを取得する方法は、タイムスタンプなしで現在の日付を取得する Java プログラムです。

于 2012-08-03T11:37:38.907 に答える
0

データベースの日付列はTIMESTAMPまたはDATEまたはである必要がありますTIME

これらは、java.sql.Timestampまたはjava.sql.Dateまたはjava.sql.Timeそれぞれとして取得されます。

これらのクラスはすべて拡張されjava.util.Dateます。

したがって、データはすでに要求している形式になっているはずです。

だから何もすることはありません。

于 2012-08-04T02:00:48.797 に答える