[英]How do I convert a long to a LocalDateTime with jOOQ
I have a database where a date is represented as a long (BIGINT).我有一个数据库,其中日期表示为长整数 (BIGINT)。 I want to fetch the data into a record
CheckIn
, like the following我想将数据提取到记录
CheckIn
中,如下所示
context.select(CHECKINS.CHECKIN_TIME,
CHECKINS.CHECKOUT_TIME
).from(CHECKINS)
.fetch(Records.mapping(CheckIn::new));
The two columns in CHECKINS are represented as TableField<CheckinsRecord, Long>
. CHECKINS 中的两列表示为 TableField
TableField<CheckinsRecord, Long>
。 CheckIn
is defined as CheckIn
定义为
public record CheckIn(LocalDateTime checkIn, LocalDateTime checkOut) {
}
Can I convert CHECKINS.CHECKIN_TIME
to a LocalDateTime right in the select, or do I need to do the conversion later?我可以在 select
CHECKINS.CHECKIN_TIME
转换为 LocalDateTime,还是需要稍后进行转换?
you can use the java.time.ZoneId
class to specify a time zone for the LocalDateTime
object, like this:您可以使用
java.time.ZoneId
class 为LocalDateTime
object 指定时区,如下所示:
context.select(CHECKINS.CHECKIN_TIME,
CHECKINS.CHECKOUT_TIME
).from(CHECKINS)
.fetch(r -> new CheckIn(
Instant.ofEpochMilli(r.get(CHECKINS.CHECKIN_TIME)).atZone(ZoneId.of("UTC")).toLocalDateTime(),
Instant.ofEpochMilli(r.get(CHECKINS.CHECKOUT_TIME)).atZone(ZoneId.of("UTC")).toLocalDateTime()
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.