簡體   English   中英

子查詢不適用於Date_Part()

[英]Sub-query is Not Working for Date_Part()

我想將子查詢作為參數傳遞給Postgres的EXTRACT()函數以獲取星期幾,但它不起作用。

工作代碼:

SELECT EXTRACT(dow FROM DATE '2018-06-07');
It returns:

+-------------+
| date_part   |
|-------------|
| 4.0         |
+-------------+

不起作用的代碼:

SELECT EXTRACT(DOW FROM DATE 
   (SELECT start_date from leaves where submitted_by=245 and type_id = 16)
);
It returns
syntax error at or near "SELECT"
LINE 1: SELECT EXTRACT(DAY FROM DATE (SELECT submitted_on FROM leave...

我不知道為什么EXTRACT()函數不接受子查詢結果作為查詢:

SELECT start_date from leaves where submitted_by=245 and type_id = 16;

返回以下內容,我認為與在工作示例中作為日期字符串傳遞的內容相同。

+--------------+
| start_date   |
|--------------|
| 2018-06-07   |
+--------------+

有人可以改正它,還是讓我知道其他方法來獲取星期幾。

只需將其應用於選擇的列:

SELECT EXTRACT(DOW from start_date)
from leaves 
where submitted_by=245 and type_id = 16

如果您確實要使用標量子查詢,則必須擺脫DATE關鍵字,只需要指定日期常量即可。

SELECT EXTRACT(DOW FROM 
                 (SELECT start_date from leaves where submitted_by=245 and type_id = 16)
               );

將函數放入 select

select (select extract(dow from start_date)
        from leaves
        where submitted_by = 245 and type_id = 16
       )

我沒有看到在select使用子查詢的優勢(相對於說將子查詢移至from 。但這應該可以實現您想要的。

暫無
暫無

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

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