查询在不同的OS上提供不同的输出

时间:2011-06-01 11:51:21

标签: java mysql windows linux

我在Java中编写了以下函数。此函数通过执行查询返回当前时间戳。功能代码如下:

private  String getTimeStamp(){
    String timeStamp=null;      
    try{
        String strQuery="select current_timestamp";
        PreparedStatement pmtQuery=con.prepareStatement(strQuery);
        ResultSet rsQuery=pmtQuery.executeQuery();
        rsQuery.next();
        timeStamp=rsQuery.getString(1);
        JOptionPane.showMessageDialog(null, "Value of timeStamp : "+timeStamp);
    }catch(SQLException e){
        System.out.println("SQL Exception in the getTimeStamp()");
    }       
    return timeStamp;
} 

当我在Windows上使用此功能它提供正确的输出并且工作正常。 防爆。

如果在寡妇执行上面的函数,它会像ex一样给出时间戳。 2011-06-01 17:05:03

但是当我在Debina linux中执行此函数时,它会给出时间戳 2011-06-01 17:05:03.0

它将.0附加到时间戳

请指导我解决这个问题

1.why such different output comes on different system?

2.How to avoid this problem?

3.How to solve this problem?

我正在使用以下配置

windows 7,Mysql数据库,Java 6

Linux

Debian linux,Mysql Database,Java 6

谢谢!

4 个答案:

答案 0 :(得分:2)

使用此

SELECT DATE_FORMAT(CURDATE(), '%d/%m/%Y %hh%mm%ss')

注意:

我想知道你为什么要查询当前日期

答案 1 :(得分:1)

问题可能是JDBC驱动程序的不同(默认)设置。

我更希望将时间戳作为Timestampjava.util.Date的子类)获取:

import java.sql.Timestamp;
...
Timestamp timeStamp;
...
timeStamp = rsQuery.getTimestamp(1); 

通过这种方式,您可以根据需要控制如何在Java代码中格式化它(例如,使用SimpleDateFormatString.format)。

答案 2 :(得分:0)

它不可移植,但您可以使用DATE_FORMAT函数:

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%d/%m/%Y %h:%i:%s');

文档为here

答案 3 :(得分:0)

您也可以使用

SimpleDateFormat

它是一个简单的日期格式化程序。