簡體   English   中英

具有If條件的PostgreSQL查詢

[英]PostgreSQL query with If condition

我正在嘗試根據以下條件獲取記錄。
讓我們以今天的日期為2018-01-23
條件1:獲取具有date_col_1> = today-1的記錄
條件2:如果date_col_1>今天,則date_col_2>今天
查詢

create table order_tbl(order_id integer primary key,
                  date_col_1 timestamp with time zone,
                  date_col_2 timestamp with time zone);
insert into order_tbl values (1, '2018-01-21', '2018-01-25');
insert into order_tbl values (2, '2018-01-22', '2018-01-25');
insert into order_tbl values (3, '2018-01-21', '2018-01-22');
insert into order_tbl values (4, '2018-01-23', '2018-01-25');
insert into order_tbl values (5, '2018-01-24', '2018-01-24');
insert into order_tbl values (6, '2018-01-21', '2018-01-23');
insert into order_tbl values (7, '2018-01-25', '2018-01-22');
insert into order_tbl values (8, '2018-01-26', '2018-01-26');

如何在PostgreSQL的WHERE子句中實現IF condition

使用CASE語句:

SELECT *
FROM order_tbl
WHERE date_col_1 >= --code for today-1
AND (CASE WHEN date_col_1 > CURRENT_DATE THEN date_col_2 > CURRENT_DATE ELSE TRUE END);

如果date_col_1>今天,那么它還會檢查date_col_2>今天。 否則,它返回TRUE,這僅表示記錄將包含在結果中(如果它通過了先前的測試)。

只需用自己的條件覆蓋這兩種情況。

大概是這樣的:

SELECT *
FROM order_tbl
WHERE date_col_1 >= DATE 'yesterday' 
    AND (date_col_1 <= DATE 'today'
        OR (date_col_1 > DATE 'today'
            AND date_col_2 > DATE 'today'
        )
    );

暫無
暫無

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

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