Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java上的MySQL日期时间_Java_Mysql - Fatal编程技术网

Java上的MySQL日期时间

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

我的表上有一个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;
}

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