从存储在DB中的Timestamp字段中仅检索小时

时间:2015-09-29 14:24:44

标签: java database oracle timestamp

我有一个包含不同字段的表。有些是String,其他是DB中的Timestamp(6)。 问题是当我从这个表中显示数据时,我得到了Timestamp字段:

  

15/12/10 00:03:00,000000000

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

  

00:03:00

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

我必须做些什么改变? 有一种方法可以只提取小时?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用EXTRACT()功能。

例如,

SELECT EXTRACT(HOUR FROM SYSDATE) FROM DUAL;

答案 1 :(得分:0)

SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) || ':' ||EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)|| ':' ||EXTRACT(SECOND FROM CURRENT_TIMESTAMP) FROM Demo;

OR

to_char(cast(SYSDATE as date),'hh24:mi:ss')

答案 2 :(得分:0)

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

SELECT to_char(t.my_date, 'hh24') FROM mytable t;

如果你不想使用它,你可以在Java端使用Calendar。在这个最小的工作示例中,您可以从表中查询数据,从时间戳中提取小时数。

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();
    }
}