我想将子查询作为参数传递给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 |
+--------------+
有人可以纠正它,或让我知道其他一些方法来获取一周中的一天。
答案 0 :(得分:2)
只需将其应用于select:
的列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)
);
答案 1 :(得分:1)
将函数放在里面select
:
select (select extract(dow from start_date)
from leaves
where submitted_by = 245 and type_id = 16
)
我没有看到在select
中使用子查询的优势(而不是 - 比如 - 将子查询移动到from
。但这应该做什么你想要的。