You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从PostgreSQL数据库的LocalDateTime中仅提取LocalDate?

从LocalDateTime字段提取不重复LocalDate的实现方案

一、Spring Data JPA 实现

1. JPQL 查询方式

通过JPQL调用数据库的日期转换函数,结合DISTINCT关键字筛选不重复的日期。不同数据库的日期转换函数略有差异,以下是常见数据库的适配写法:

MySQL 适配

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.time.LocalDate;
import java.util.List;

public interface YourEntityRepository extends JpaRepository<YourEntity, Long> {
    @Query("SELECT DISTINCT FUNCTION('DATE', e.createTime) FROM YourEntity e")
    List<LocalDate> findDistinctLocalDates();
}

PostgreSQL 适配

PostgreSQL支持直接通过CAST转换类型:

@Query("SELECT DISTINCT CAST(e.createTime AS DATE) FROM YourEntity e")
List<LocalDate> findDistinctLocalDates();

2. 原生SQL 集成方式

如果更倾向于使用原生SQL,可通过nativeQuery = true指定原生查询:

@Query(value = "SELECT DISTINCT DATE(create_time) AS distinct_date FROM your_entity", nativeQuery = true)
List<LocalDate> findDistinctLocalDatesNative();

二、纯原生SQL 查询实现

直接在数据库客户端或数据工具中执行原生SQL,根据数据库类型选择对应语句:

MySQL

SELECT DISTINCT DATE(your_localdatetime_column) AS distinct_date FROM your_table;

PostgreSQL

-- 方式1:CAST转换
SELECT DISTINCT CAST(your_localdatetime_column AS DATE) AS distinct_date FROM your_table;

-- 方式2:DATE_TRUNC 截断到天
SELECT DISTINCT DATE_TRUNC('day', your_localdatetime_column)::DATE AS distinct_date FROM your_table;

Oracle

SELECT DISTINCT TRUNC(your_localdatetime_column) AS distinct_date FROM your_table;

内容的提问来源于stack exchange,提问作者Ramzan Kurbanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:10:30