【问题标题】:Heroku - SQL query return difference results on localhost and herokuHeroku - SQL 查询在 localhost 和 heroku 上返回差异结果
【发布时间】:2012-04-26 17:27:53
【问题描述】:

我在表格中有日期列birthday,例如。值2003-05-01。 在这张表上,我运行以下查询:

SELECT "users".* FROM "users" WHERE (users.birthday < current_date - interval '15' year);

在我的本地主机上,没有返回带有birthday: 2003-05-15 的行(这是正确的),但在 heroku 上却返回了。

我在本地使用 PostgreSQL 数据库,所以我不明白,怎么可能在同一个查询上得到两个不同的结果...

有人遇到过类似的问题吗?这种行为可能有什么问题?

感谢您的每一个建议。

【问题讨论】:

  • 根据 Heroku,current_date 的值是多少?
  • 也许SELECT current_date 看看结果如何?
  • 所以,Heroku 上的 select current_date; 返回 2012-04-26(在我的本地 postgresql 数据库上也是如此)。
  • users 表中有多少行? Heroku 上是否还有其他未正确返回的行?
  • 表格中大约有 5-6 行。是的,有...但所有未正确返回的行都是使用current_date 规则选择的行

标签: sql postgresql heroku intervals


【解决方案1】:

尝试将“年份”放在值为“15”的字符串中。这是一个长镜头,但可能是 Heroku 默默地删除了“年份”,认为它是一个列别名:

db=# select current_date - interval '15' year;
      ?column?       
---------------------
 1997-04-26 00:00:00

db=# select current_date - interval '15'
        years        
---------------------
 2012-04-25 23:59:45

db=# select current_date - interval '15 year';
      ?column?       
---------------------
 1997-04-26 00:00:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多