【问题标题】:postgresql query do not show inserted rowpostgresql 查询不显示插入的行
【发布时间】:2013-11-05 10:40:18
【问题描述】:

我的 PostgreSQL 9.2 服务器上出现了 poltergeist。

当我插入包含时间戳列 (date_published) 的行时,当我运行以下查询时,该行出现在列表中:

select * from a_table

但是当我运行查询时,我将提到的日期 (date_published) 列与 CURRENT_TIMESTAMP 进行比较时,它不会显示该行。

select * from a_table
             WHERE date_published < current_timestamp

上面的查询仅显示大约 3-4 小时后的行。

date_published 列类型为:

...,date_published TIMESTAMP(6) WITHOUT TIME ZONE NULL,...

【问题讨论】:

  • 您从哪里获得要放入DATE_PUBLISHED 列的值?如果您的查询在插入后 3-4 小时后返回记录,这可能意味着您服务器上的时间更早。你能检查一下CURRENT_TIMESTAMP 函数返回什么吗?
  • 谢谢。我使用 JSF 框架和 JPA 来插入行本身。分配给实体类的 DATE_PUBLISHED 列作为带有 TIMESTAMP 注释的 Date 数据类型:@Temporal(TemporalType.TIMESTAMP) private Date datePublished;
  • SELECT CURRENT_TIMESTAMP 显示当前时间
  • 好的,你能通过 JSF 和 JPA 插入一行并检查 DATE_PUBLISHED 列中插入的日期吗?似乎框架的时区不匹配或时间设置错误,您的列中的时间错误。
  • 它在 2013-11-05 12:50:00 插入了这个值。选择 current_timestamp 查询显示此值 2013-11-05 17:40:55

标签: jquery sql postgresql timestamp compare


【解决方案1】:

解决了!!!

@Przemyslaw Kruglej 提到问题出在 PostgreSQL 服务器的时区配置中。您需要在 PostgreSQL 配置文件中配置时区。

对于 Windows 用户,请转到 .../PostgreSQL/9.2/data/postgresql.conf

将“log_timezone”和“timezone”更改为您的时区位置。就我而言,它是“亚洲/阿拉木图”

保存并重新启动您的服务器。就我而言,所有更改仅在 PC 重新启动后才开始起作用。

所以,祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2022-07-05
    • 2011-03-24
    • 1970-01-01
    相关资源
    最近更新 更多