这是我的数据库:
在这里,我必须检查查询当前日期+状态= 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中将时间戳转换为日期。如何在我的代码中使用该代码?
答案 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)
数据库中的日期列应为TIMESTAMP
或DATE
或TIME
。
分别以java.sql.Timestamp
或java.sql.Date
或java.sql.Time
检索这些内容。
所有这些课程都延伸java.util.Date
。
因此,数据应该已经采用您要求的格式。
所以无所事事。