【问题标题】:Getting query by date - ERROR: operator does not exist: timestamp without time zone ~~ unknown按日期获取查询 - 错误:运算符不存在:没有时区的时间戳 ~~ 未知
【发布时间】:2020-07-06 21:51:37
【问题描述】:

我正在尝试获取今天日期的数字总和。 我的方法是使用 LocalDateTime 格式如下

yyyy-MM-dd HH:mm:ss

而且我从服务器中挑选的日期是这种格式

2020-03-26 12:36:14.48947

由于日期变化不断变化,我的兴趣是处理这个 2020-03-26,因为两者都将存在于格式化的今天日期和来自服务器的日期

这是我正在使用的查询

"... AND p.regDate LIKE :todayDate..." 

这里是 DateTimeFormertter

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime today = null;
today = LocalDateTime.now();
System.out.println("here is today " + today);

使用上面的方法,我得到一个错误。请问我可以从查询中得到今天的日期

【问题讨论】:

  • 你遇到什么错误?
  • 还有为什么LocalDateTime today = null; today = LocalDateTime.now();,为什么不LocalDateTime today = LocalDateTime.now();
  • 这里是错误::: - 错误:运算符不存在:没有时区的时间戳~~未知
  • 如果我在您的数据库中了解您的 regDate 等于 2020-03-26 并且您想获取 regDate 等于该日期的记录?
  • 没有。我的 regDate 等于 2020-03-26 12:36:14.48947

标签: java postgresql datetime


【解决方案1】:

首先,您的查询需要LocalDate 而不是LocalDateTime

LocalDate today = LocalDate.now(); // current date "2020-03-26"
// or a custom LocalDate
LocalDate today = LocalDate.of(2020, Month.MARCH, 26);

然后,要从数据库中的 datetime 获取日期部分,您可以使用:

"... AND DATE(p.regDate) = :todayDate..." 

其中:DATE(p.regDate) 仅提取日期部分,与= 比较而不是LIKE

【讨论】:

  • 在一次单独的尝试中只是试图获得一周前的记录,所以这样做了 - LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);在数据库中我有这个 - 2020-03-19 12:36:14.48947
  • 结果为空
  • @Blaze 获得一周前 2020-03-19 你的意思是 LocalDate.now().minus(1, ChronoUnit.WEEKS)?注意minus,而不是plus
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
相关资源
最近更新 更多