gpt4 book ai didi

mysql - PostgreSQL (Heroku) 中的时间/日期时间比较

转载 作者:行者123 更新时间:2023-11-29 08:58:52 26 4
gpt4 key购买 nike

我正在为 Heroku (Postgres) 构建一个应用程序,但由于各种原因,我使用 MySQL 在本地开发它。我遇到了一个障碍,涉及到我的 MySQL 开发环境可以顺利完成但 Heroku Postgres 环境挂起的问题。这是来自 Heroku 的日志流:

2012-02-07T10:00:00+00:00 app[web.1]: Report Load (2.5ms)  SELECT id, datetime_utc FROM "reports" WHERE (datetime_utc = '2012-02-07 10:00:00.000000') AND (datetime_utc > spot_sunrise_utc AND datetime_utc > spot_sunset_utc) ORDER BY datetime_utc ASC LIMIT 500
2012-02-07T10:00:00+00:00 app[web.1]: PGError: ERROR: operator does not exist: timestamp without time zone > time without time zone
2012-02-07T10:00:00+00:00 app[web.1]: LINE 1: ...EEN 0.4573170731707317 and 200) AND (datetime_utc > spot_sun...
2012-02-07T10:00:00+00:00 app[web.1]: ^
2012-02-07T10:00:00+00:00 app[web.1]: HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

datetime_utc 字段是真正的日期时间,而 spot_sunrise/sunset_utc 字段只是时间值。

造成这种情况的原因是什么?我该如何解决它?

最佳答案

要缓解类型不兼容性,请将 timestampdatetime_utc 转换为 time:

SELECT id, datetime_utc
FROM reports
WHERE datetime_utc = '2012-02-07 10:00'
AND datetime_utc::time > spot_sunrise_utc
AND datetime_utc::time < spot_sunset_utc -- you mean <, right?
ORDER BY datetime_utc -- noise
LIMIT 500;

参见:

添加的 ORDER BY datetime_utc 只是使用 WHERE datetime_utc = '2012-02-07 10:00' 过滤后的噪音。

旁白 1:通常最好在本地使用与部署相同的数据库进行开发。所以在本地使用 MySQL 是一个坏主意。

旁白2:数据库的名称是PostgreSQL或简称Postgres。没有“postgre”这样的东西。

关于mysql - PostgreSQL (Heroku) 中的时间/日期时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9174406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com