在java中将时间戳转换为日期
这是我的数据库: 在这里,我必须检查查询当前日期+状态=Q信息,并获得计数值 这是我的代码:在java中将时间戳转换为日期,java,mysql,web-services,soap,valueconverter,Java,Mysql,Web Services,Soap,Valueconverter,这是我的数据库: 在这里,我必须检查查询当前日期+状态=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.f
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中如何将时间戳转换为日期呢。如何在我的代码中使用该代码
Date date = new Date(timestamp);
时间戳是一个长变量,假设时间戳是以毫秒为单位的时间,则可以使用java.util.Calendar将时间戳转换为日期时间,如下所示:
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
java.util.Date date = cal.getTime();
要以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)获取日历对象的方法如下看起来您看到的整数值是UNIX自纪元开始的秒数(即1970-01-01T00:00:00Z)-> 我不知道mysql JDBC驱动程序是否会负责为您转换此字段。如果是,获取其价值的首选方法是:
java.sql.Timestamp ts = result.getTimestamp( columnNumber );
时间戳扩展了java.util.Date,所以您可以在需要常规java.util.Date的地方使用它
如果出于任何原因,这没有产生所需的结果,则将列值设置为long
,并将该值调整为毫秒。您在这里很幸运,因为Java和UNIX的时代是同时开始的(Java的更精确)
数据库中的日期列应该是
时间戳
或日期
或时间
它们分别作为java.sql.Timestamp
或java.sql.Date
或java.sql.Time
检索
所有这些类都扩展了java.util.Date
因此,数据应该已经是您要求的格式
所以没有什么可做的。您可以使用mysql函数实现同样的功能。希望下面的查询为您提供所需的输出
select *
from orders
where status='Q' AND
date_format(from_unixtime(date),'%Y-%m-%d') = current_date;
Java中有TimeStamp类,可能是sql.TimeStamp。。查看此链接可能会对您有所帮助。查看此链接可将时间戳转换为日期。[时间戳到日期][1][1]:日期列是什么SQL类型?这不是答案。日期列是什么SQL类型?@krishnaveni您想要什么样的示例?我在java.util.date.parse(date.java:598)的java.util.date(date.java:255)的com.xcart.TodayQ.data(TodayQ.java:16)的com.xcart.Demo.main(Demo.java:5)的线程“main”中得到了异常您确定您的变量类型为“long”吗?因为你的stackTrace说它正在输入解析方法,这可能表明你正在将字符串传递到构造函数中。现在我得到的输出总是显示为1970-01-01 0…我不明白dis。检查查询,只给我计数。如何做?Lexander Pogrebnyak的答案在我看来最准确。它也在以下异常:线程“main”java.lang.IllegalArgumentException在java.util.Date.parse(Date.java:598)在java.util.Date.(Date.java:255)在com.xcart.TodayQ.data(TodayQ.java:16)在com.xcart.Demo.main(Demo.java:5)在java:598)在java.util.Date(Date.java:255)在com.xcart.xcart.Demo.Demo.Demo.main(de?发布时间戳值塔尔生成例外现在我得到的输出总是显示1970-01-01 0…我无法理解dis。检查查询并只给我计数。如何进行doAlexander Pogrebnyak的回答在我看来最准确。嗨,如何获得本月的计数值。我必须使用下面的查询。从订单中选择*status='Q'和DATE\格式(从\u UNIXTIME(DATE),'%Y-%m-%d')=月(DATE)=月(CURDATE())和年(DATE)=年(CURDATE())。但没有为我提供正确的计数值。仅显示0。此查询适用于您。从订单中选择count(1),其中status='Q'和DATE_格式(从UNIXTIME(ts),'%Y-%m')=DATE_格式(now(),'%Y-%m')这可能是问题的最准确答案。
select *
from orders
where status='Q' AND
date_format(from_unixtime(date),'%Y-%m-%d') = current_date;