我有一個應該回傳一些行的查詢,但它回傳空白。據我所知......下面的圖片將顯示問題。
這是查詢
SELECT * from matches m WHERE M.PLAYED_AT BETWEEN (M.PLAYED_AT - M.STARTED_PREDICTION) AND (M.PLAYED_AT - M.ENDED_PREDICTION)
這是表:
-- Table Definition ----------------------------------------------
CREATE TABLE matches (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamp with time zone,
started_prediction interval NOT NULL DEFAULT '48:00:00'::interval,
ended_prediction interval NOT NULL DEFAULT '02:00:00'::interval,
played_at timestamp with time zone NOT NULL
);
-- Indices -------------------------------------------------------
CREATE UNIQUE INDEX matches_pkey ON matches(id int4_ops);


我測驗了計算并且它單獨作業了。
SELECT id, (M.PLAYED_AT - M.STARTED_PREDICTION) started , (M.PLAYED_AT - M.ENDED_PREDICTION) ended from matches m;

uj5u.com熱心網友回復:
您的條件不可能是正確的,因為您將 M.PLAYED_AT 進行比較
BETWEEN M.PLAYED_AT - X AND M.PLAYED_AT - Y- 這永遠不會是因為您將時間戳與先前的時間戳和另一個先前的時間戳進行比較。
可能你的意思是 BETWEEN ... AND (M.PLAYED_AT M.ENDED_PREDICTION)
uj5u.com熱心網友回復:
我發現了這個問題,應該是now()而不是play_At。
SELECT * from matches m WHERE NOW() BETWEEN (M.PLAYED_AT - M.STARTED_PREDICTION) AND (M.PLAYED_AT - M.ENDED_PREDICTION)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/363757.html
標籤:sql PostgreSQL的
