【问题标题】:Query gives different output on different OS查询在不同的操作系统上给出不同的输出
【发布时间】:2011-06-01 11:51:20
【问题描述】:

我用 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.为什么不同的系统会有不同的输出? 2.如何避免这个问题? 3.如何解决这个问题?

我正在使用以下配置

窗口

Windows 7、Mysql 数据库、Java 6

Linux

Debian linux、Mysql 数据库、Java 6

谢谢!

【问题讨论】:

  • 尝试将参数作为日期而不是字符串检索。

标签: java mysql windows linux


【解决方案1】:

使用这个

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

注意:

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

【讨论】:

  • 为什么?最终从数据库服务器获取当前日期和时间(而不是当前系统的)。或者只是一个测试/显示问题的示例。
【解决方案2】:

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

我更喜欢将时间戳获取为Timestampjava.util.Date 的子类):

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

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

【讨论】:

    【解决方案3】:

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

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

    文档是here

    【讨论】:

      【解决方案4】:

      你也可以使用

      SimpleDateFormat
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-09
        • 2018-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        相关资源
        最近更新 更多