将当前时间插入表中

时间:2012-03-22 21:04:42

标签: java oracle date time

                java.util.Date date = new java.util.Date();
                java.sql.Date today = new java.sql.Date(date.getTime()); //2012-03-23
                java.sql.Time time = new java.sql.Time(date.getTime()); //02:32:46
                PreparedStatement pst = null;
String queryString = "INSERT INTO PR_VISITOR(PRISONER_ID,VISITOR_NAME,FATHER_NAME,DOV,IN_TIME) VALUES (?,?,?,?,?)";
                        pst = connect.prepareStatement(queryString);
                        pst.setString(1, pr_id);
                        pst.setString(2, visit);
                        pst.setString(3, father);
                        pst.setDate(4, today);
                        pst.setTime(5, time);
                        int officerQuery = pst.executeUpdate();
                        if (officerQuery == 1) {
                            response.sendRedirect("/FYP3.4/prisonAdmin/visitor_out.jsp");
                            JOptionPane.showMessageDialog(null, "Visitor information registered !!", "Visitor Information", JOptionPane.INFORMATION_MESSAGE);
                        } else {
                            JOptionPane.showMessageDialog(null, "Unable to Add information !!", "Visitor Information", JOptionPane.ERROR_MESSAGE);
                        }

通过使用上面的代码,我试图将当前日期和时间插入到具有单独列的表中。当我执行上述查询时,它也会在IN_TIME字段中插入今天的日期。

修改

IN_TIMEDOV的数据集为DATE

需要帮助.. !!

5 个答案:

答案 0 :(得分:1)

由于DOV和IN_TIME为date,因此您无需分开日期和小时。 Oracle中的date类型包含日期和时间。我建议您将表更改为只有一个日期列。

要插入当前时间,您可以使用Oracle的sysdate函数:

INSERT INTO PR_VISITOR(PRISONER_ID,VISITOR_NAME,FATHER_NAME,DATETIME_COLUMN) VALUES (?,?,?,?,SYSDATE)

要格式化日期值的输出,您可以使用Java中的SimpleDateFormat类或Oracle中的to_char

答案 1 :(得分:1)

Oracle数据库中的DATE列将始终存储一天(即2012年3月22日)和第二天(即3:30:00 PM)的时间。 java.sql.Date和java.sql.Time也存储日期和时间,但是存储到毫秒。

在当天和当时在Oracle中使用单独的列并不是真的有意义,但特别是在两列都被声明为DATE数据类型的情况下。使用声明为DATE的单个列会更常规。如果您真的想要,可以截断当天,以便它代表当天的午夜,然后将时间组件存储为INTERVAL DAY TO SECOND。但这通常会给系统增加相当大的复杂性,而收益却很小。

答案 2 :(得分:0)

使用oracle的'systimestamp'会好得多。原因是,如果你的java代码在一个时区运行,而oracle则在另一个时区运行。强制使用自己的Time对象可能会导致问题。

你真的需要单独的字段吗?我认为只要有一个时间戳就足够了。

答案 3 :(得分:0)

使用SimpleDateFormat。这是我使用它的一种方式:

Date now = Calendar.getInstance().getTime());
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String date = df.format(now);
DateFormat tf = new SimpleDateFormat("HHmmss");
String time = tf.format(now);

答案 4 :(得分:0)

遵循这一点,它将有助于java和oracle

create table datetime(date_time timestamp);

插入日期时间值(sysdate);

获取日期: 从datetime中选择to_char(date_time,'DD-MON-YY');

例如:12-JUL-12

获得月份: 从datetime中选择to_char(date_time,'mm');

例如:7

获得时间: 从datetime中选择to_char(date_time,'HH24:MI:SS');

例如:23:56:15

欢呼声!!