简体   繁体   English

如何使用 jOOQ 将 long 转换为 LocalDateTime

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM