Java 从数据库中存储的时间戳字段中仅检索小时

Java 从数据库中存储的时间戳字段中仅检索小时,java,database,oracle,timestamp,Java,Database,Oracle,Timestamp,我有一张有不同字段的表。有些是字符串,有些是时间戳(6),单位为DB。 问题是,当我显示此表中的数据时,时间戳字段会出现以下情况: 2010年12月15日00:03:00000000000 我只想这样存储和显示一小时: 00:03:00 没有别的了。 我通过java中的web方法从DB检索数据。我正在使用Hibernate和DAO模式 我必须做什么改变? 有没有一种只提取一小时的方法 谢谢 使用函数 比如说, SELECT EXTRACT(HOUR FROM SYSDATE) FROM DUAL

我有一张有不同字段的表。有些是字符串,有些是时间戳(6),单位为DB。 问题是,当我显示此表中的数据时,时间戳字段会出现以下情况:

2010年12月15日00:03:00000000000

我只想这样存储和显示一小时:

00:03:00

没有别的了。 我通过java中的web方法从DB检索数据。我正在使用Hibernate和DAO模式

我必须做什么改变? 有没有一种只提取一小时的方法

谢谢

使用函数

比如说,

SELECT EXTRACT(HOUR FROM SYSDATE) FROM DUAL;
使用函数

比如说,

SELECT EXTRACT(HOUR FROM SYSDATE) FROM DUAL;

在SQL中,您可以使用SQL端的函数,该函数将直接返回小时

SELECT to_char(t.my_date, 'hh24') FROM mytable t;
如果您不想使用它,您可以在Java端使用它。在这个最小的工作示例中,您从表中查询数据,并从时间戳中提取小时

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Calendar;

public final class StackOverFlowExmaple {

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e1) {
            System.out.println("registering oracle.jdbc.driver.OracleDriver did not work");
        }

        final String dbUser = "", dbPasswd = "", dbHost = "", dbPort = "", dbSid = "";
        final String connectionString = "jdbc:oracle:thin:" + dbUser + "/" + dbPasswd + "@//" + dbHost + ":" + dbPort + "/" + dbSid;

        final Connection connection = DriverManager.getConnection(connectionString);
        final Statement stmt = connection.createStatement();

        final ResultSet resultset = stmt.executeQuery("SELECT t.my_timestamp FROM my_table t;");

        while (resultset.next()) {
            final Timestamp tStamp = resultset.getTimestamp(0);
            final long time = tStamp.getTime();
            final Calendar cal = Calendar.getInstance();

            cal.setTimeInMillis(time);
            int hour = cal.get(Calendar.HOUR_OF_DAY);
            System.out.println("hour: " + hour);
        }

        connection.close();
    }
}
在SQL中,您可以使用SQL端的函数,该函数将直接返回小时

SELECT to_char(t.my_date, 'hh24') FROM mytable t;
如果您不想使用它,您可以在Java端使用它。在这个最小的工作示例中,您从表中查询数据,并从时间戳中提取小时

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Calendar;

public final class StackOverFlowExmaple {

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e1) {
            System.out.println("registering oracle.jdbc.driver.OracleDriver did not work");
        }

        final String dbUser = "", dbPasswd = "", dbHost = "", dbPort = "", dbSid = "";
        final String connectionString = "jdbc:oracle:thin:" + dbUser + "/" + dbPasswd + "@//" + dbHost + ":" + dbPort + "/" + dbSid;

        final Connection connection = DriverManager.getConnection(connectionString);
        final Statement stmt = connection.createStatement();

        final ResultSet resultset = stmt.executeQuery("SELECT t.my_timestamp FROM my_table t;");

        while (resultset.next()) {
            final Timestamp tStamp = resultset.getTimestamp(0);
            final long time = tStamp.getTime();
            final Calendar cal = Calendar.getInstance();

            cal.setTimeInMillis(time);
            int hour = cal.get(Calendar.HOUR_OF_DAY);
            System.out.println("hour: " + hour);
        }

        connection.close();
    }
}

我需要在Java端制作。我需要在Java端制作。我需要在Java端制作。我需要在Java端制作。我需要在Java端制作。我需要在Java端制作。我有一个类,它的日期字段与数据库中的时间戳字段一致,所以我真的不知道如何使用您为java编写的内容。我现在将我的帖子改为一个最简单的工作示例,我希望您现在知道从何处开始:-)我需要在java端实现它。我有一个类,它的日期字段与数据库中的时间戳字段一致,所以我真的不知道如何使用您为java编写的内容。我现在将我的帖子改为一个简单的工作示例,希望您现在知道从何处开始:-)