Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将时间戳转换为日期_Java_Mysql_Web Services_Soap_Valueconverter - Fatal编程技术网

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

在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

这是我的数据库:

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

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;