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变量中捕获日期的实际毫秒数。从现在开始,数学完全取决于您的实施。

请记住,在午夜(10/05/2012 00:00:00)获取 Calendar 对象的方法是Java program to get the current date without timestamp

于 2012-08-03T11:37:38.907 回答
0

数据库中的日期列应该是TIMESTAMPorDATETIME

这些被检索为java.sql.Timestampjava.sql.Datejava.sql.Time分别。

所有这些类都扩展了java.util.Date.

所以数据应该已经是您要求的格式。

所以没有什么可做的。

于 2012-08-04T02:00:48.797 回答