Java.util.Date与Java.sql.Date

我有一个Oracle数据库,其中包含一个字段W_PLANNED_DATE: 19/03/2013 10:55:00 (Date)

在Java中,我把这个值放入一个变量中:

Date dteBeginOrWaitingItem = orWaitinglist.getWPlannedDate();

value: 2013-03-19

现在,我的时代到底发生了什么? 我需要这个来填充primefaces的schedulecomponent。 我如何获得完整的日期和时间值

eventResourceAvailPerDay.addEvent(new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, "waitingitem"));

由于没有其他时间或时间只是00:00:00此方法将事件置于12:00 PM

我知道如何使用Calendar类,但它只是让我设置日期,时间似乎是空的,但在数据库视图中我有一个日期时间值。

为myBean

import java.util.Date;
@ManagedBean(name="scheduleController")
@SessionScoped
public class ScheduleController implements Serializable {

private Date dteBeginOrWaitingItem, dteEndOrWaitingItem;

//methods
try
    {
        //eventWaitinglist.clear();
        OrWaitinglistDao orWaitinglistDao = new OrWaitinglistDaoImpl();
        waitingEvents = orWaitinglistDao.getOrWaitinglistKeysByResource(rKey);
        int i = 0;
        Iterator<OrWaitinglist> it2 = waitingEvents.iterator();
        while (it2.hasNext()) 
        {
            orWaitinglist = it2.next();
            dteBeginOrWaitingItem = (Date) orWaitinglist.getWPlannedDate();
            dteEndOrWaitingItem = orWaitinglist.getWPlannedDate();
            //dteEndOrWaitingItem = orWaitinglist.getWPlannedDate();
            reason = orWaitinglist.getWDescription();
            eventResourceAvailPerDay.addEvent(new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, "waitingitem"));

            i += 1;
            System.out.println("EventWaiting: " + i + " " + dteBeginOrWaitingItem + " " + dteEndOrWaitingItem + " " + reason);
        }
     }
    catch(java.util.EmptyStackException Ex)
    {
        System.out.println(Ex.getMessage());
    }

工作更新: Bean:

try
    {
        //eventWaitinglist.clear();
        OrWaitinglistDao orWaitinglistDao = new OrWaitinglistDaoImpl();
        waitingEvents = orWaitinglistDao.getOrWaitinglistKeysByResource(rKey);
        int i = 0;
        Iterator<OrWaitinglist> it2 = waitingEvents.iterator();
        while (it2.hasNext()) 
        {
            orWaitinglist = it2.next();
            Long wPlannedDate = orWaitinglist.getWPlannedDate().getTime();
            if (wPlannedDate != 0) {
                Date wPlannedDateConverted = new Date(wPlannedDate);
                dteBeginOrWaitingItem = convertDate(0, 0, wPlannedDateConverted);
                dteEndOrWaitingItem = convertDate(orWaitinglist.getWDuration().intValue(), orWaitinglist.getWAdditionalTime().intValue(), wPlannedDateConverted);
            }
            reason = orWaitinglist.getWDescription();
            DefaultScheduleEvent newResourceEvent = new DefaultScheduleEvent(reason, dteBeginOrWaitingItem, dteEndOrWaitingItem, orWaitinglist);
            newResourceEvent.setStyleClass("waitingitem");
            eventResourceAvailPerDay.addEvent(newResourceEvent);
        }
     }
    catch(java.util.EmptyStackException Ex)
    {
        System.out.println(Ex.getMessage());
    }


public static Date convertDate(Integer wDuration, Integer wAdditionalTime, Date availDate)
{
    Calendar cal = Calendar.getInstance();
    Integer wAdditionalTimeHours, wAdditionalTimeMinutes;
    Integer wDurationHours, wDurationMinutes;

    if(wAdditionalTime != 0 || wDuration != 0) {
        if (wAdditionalTime !=0) {
            wAdditionalTimeHours = (int) Math.floor (wAdditionalTime / 60);
            wAdditionalTimeMinutes = wAdditionalTime - (wAdditionalTimeHours * 60);
            cal.setTime(availDate);
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
            cal.add(Calendar.MINUTE, wAdditionalTimeMinutes);
            cal.add(Calendar.HOUR_OF_DAY, wAdditionalTimeHours);
        }
        if (wDuration != 0) {
            wDurationHours = (int) Math.floor (wAdditionalTime / 60);
            wDurationMinutes = wAdditionalTime - (wDurationHours * 60);
            cal.setTime(availDate);
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
            cal.add(Calendar.MINUTE, wDurationMinutes);
            cal.add(Calendar.HOUR_OF_DAY, wDurationHours);
        }
    } else {
        cal.setTime(availDate);
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
    }
    return cal.getTime();
}

型号更新:

<property name="WPlannedDate" type="timestamp">
  <column length="7" name="W_PLANNED_DATE">
    <comment>Planned date</comment>
  </column>
</property>

编辑:如果您使用.xml进行休眠更改类型为时间戳而不是日期。 <property name="yourdate" column="YOUR_DATE" type="timestamp" />因此你有时间在你的数据库上并且可以使用simpledateformat

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy-HH:mm");
dateFormat.format(orWaitinglist.getWPlannedDate());

java.sql.Date不会返回时间组件,您应该在创建预处理语句或以其他任何方式查询数据库时使用java.util.Date。

编辑:与SQL查询使用java.util.Date可能会很棘手,因为查询将期望java.sql.Date。 它在春天适合我。 如果你不想使用这个,那么你也可以使用java.sql.Timestamp。

见下面的文件:

8.3.12 DATE,TIME和TIMESTAMP

有三种与时间相关的JDBC类型:

JDBC DATE类型表示由日期,月份和年份组成的日期。 相应的SQL DATE类型在SQL-92中定义,但它仅由主要数据库的一个子集实现。 一些数据库提供了支持相似语义的备选SQL类型。 JDBC TIME类型表示一个由小时,分钟和秒组成的时间。 相应的SQL TIME类型在SQL-92中定义,但它仅由主要数据库的一个子集实现。 和DATE一样,一些数据库提供了支持相似语义的替代SQL类型。 JDBC TIMESTAMP类型表示DATE加上TIME和纳秒字段。 SQL-92中定义了相应的SQL TIMESTAMP类型,但它仅由极少数的数据库实现。 由于标准Java类java.util.Date与这三种JDBC日期/时间类型中的任何一种完全不匹配(它包括DATE和TIME信息,但没有纳秒),所以JDBC定义了三个与java.util.Date相对应的子类SQL类型。 他们是:

用于SQL DATE信息的java.sql.Date。 java.util.Date基类的小时,分​​钟,秒和毫秒字段应设置为零。 如果提供给java.sql.Date构造函数的毫秒数为负数,那么驱动程序将计算该日期为1970年1月1日之前的毫秒数。否则,该日期将计算为指定的毫秒数, 1970年。

SQL TIME信息的java.sql.Time。 java.util.Date基类的年,月和日字段设置为1970年1月和1日。这是Java时期的“零”日期。 用于SQL TIMESTAMP信息的java.sql.Timestamp。 该类通过添加纳秒字段来扩展java.util.Date。


取而代之的java.sql.Datejava.sql.Timestamp和匹配方法应该被使用。 oracle类型DATE等同于JDBC和SQL标准类型TIMESTAMP

当使用get/setDate方法之一时,JDBC规范要求驱动程序排除时间部分。

链接地址: http://www.djcxy.com/p/3079.html

上一篇: Java.util.Date vs Java.sql.Date

下一篇: Default Value to Today?