Java上的MySQL日期时间
我的表上有一个datetime字段,我需要在我的Java代码中只获取小时 我的意思是,我有我的结果集上的数据,需要得到结果(小时)并使用我的setHour方法 基本上: 在my DB上(字段为DATETIME): 从extra中选择hourField 1000-01-01 00:00:00 在我的模型类中,我有var、get和set:Java上的MySQL日期时间,java,mysql,Java,Mysql,我的表上有一个datetime字段,我需要在我的Java代码中只获取小时 我的意思是,我有我的结果集上的数据,需要得到结果(小时)并使用我的setHour方法 基本上: 在my DB上(字段为DATETIME): 从extra中选择hourField 1000-01-01 00:00:00 在我的模型类中,我有var、get和set: private Date hourField; public Date getHourField() { return hourField; } pu
private Date hourField;
public Date getHourField() {
return hourField;
}
public void setHourField(Date hourField) {
this.hourField = hourField;
}
在代码中,我想从数据库中获取数据:
ModelClass model = new ModelClass();
model.setHourField(result.getDate("hourField"));
我该怎么做
编辑
我明白了!这太简单了
正如我所说,DB中的字段是DATETIME,Java中的var是Date。所以,当执行上面的方法时,我只得到了日期
所以我改为使用getDate,现在使用getTime,它可以工作。首先,您需要从结果集中检索日期:
ResultSet rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("dateField");
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
您可以使用以下代码行获取小时数:
calendar.get(Calendar.HOUR);
更详细的例子可以在这里找到:java.time
在Java8和更高版本中,使用Java.time框架
首先将java.sql.Timestamp
转换为即时
,UTC时间轴上的一个时刻
java.sql.Timestamp tz = myResultSet.getTimestamp( … );
Instant instant = tz.toInstant();
应用所需/预期时区以获得一天中有意义的一小时。例如,在魁北克省,你的即时
可能是中午12点,但这意味着早上7点。或夏令时(DST)下的上午8点,具体取决于值的日期。因此,您需要进行时区调整,以便在特定上下文中具有意义
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
通过打电话提取一天中的时间
首先向我们展示一些代码…应该是
java.sql.Timestamp
而不是Date
?和getTimestamp
而不是getDate
?不,可以通过java.sql.date
对象检索日期。更多信息:问题是:字段是DATETIME
没错,应该是java.sql.Timestamp
。我将编辑答案。
int hour = zdt.getHour();