在Java中将时间戳转换为日期

时间:2012-08-03 11:16:41

标签: java mysql web-services soap valueconverter

这是我的数据库: enter image description here

在这里,我必须检查查询当前日期+状态= 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中将时间戳转换为日期。如何在我的代码中使用该代码?

6 个答案:

答案 0 :(得分:4)

使用mysql函数可以实现相同的功能。希望以下查询为您提供所需的输出。

select * 
from orders
where status='Q' AND 
      date_format(from_unixtime(date),'%Y-%m-%d') = current_date;

答案 1 :(得分:2)

Date date = new Date(timestamp);

而timestamp是一个长变量

答案 2 :(得分:1)

假设timestamp是以毫秒为单位的时间,您可以使用java.util.Calendar将时间戳转换为日期时间,如下所示:

java.util.Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
java.util.Date date = cal.getTime();

答案 3 :(得分: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 );

答案 4 :(得分: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

答案 5 :(得分:0)

数据库中的日期列应为TIMESTAMPDATETIME

分别以java.sql.Timestampjava.sql.Datejava.sql.Time检索这些内容。

所有这些课程都延伸java.util.Date

因此,数据应该已经采用您要求的格式。

所以无所事事。