簡體   English   中英

PostgreSQL (Heroku) 中的時間/日期時間比較

[英]Time/datetime Comparison in PostgreSQL (Heroku)

我正在為 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字段是一個真實的datetimespot_sunrise / sunset_utc字段只是時間值。

這是什么原因造成的,我該如何解決?

為了緩解類型不兼容,將timestampdatetime_utctime

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”這樣的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM