其中DATE和TODATE导致未知命令错误



我在使用日期筛选器表达式时遇到问题。我使用的是SQL Developer,结果错误,结果底部出现未知命令错误。

select cmp.company_name, sum (inv.total_price), max (inv.invoice_date)
from   companies cmp join invc_header inv on cmp.cmp_auto_key = inv.cmp_auto_key
group by cmp.company_name;
where inv.invoice_date = '2017-01-27'

我还使用了inv.invoice_date='2017-01-27'

错误是";未知命令";

Jeff

您正在获得"未知命令错误";因为您的查询中间有一个半圆形的CCD_ 1。分号用于终止一个语句,因此SQL解析器认为在第一个语句之后有第二个语句where inv.invoice_date = '2017-01-27',而它不知道如何解析它

要解决此问题,WHERE子句需要位于GROUP BY之前。

除此之外,'2017-01-27'不是日期;它是一个字符串文字,恰好看起来像一个日期。DATE '2017-01-27'是日期文字,也可以使用函数TO_DATE( '2017-01-27', 'YYYY-MM-DD' )将字符串显式转换为日期。

SELECT cmp.company_name,
SUM(inv.total_price),
MAX (inv.invoice_date)
FROM   companies cmp
JOIN invc_header inv
ON cmp.cmp_auto_key = inv.cmp_auto_key
WHERE inv.invoice_date = DATE '2017-01-27'
GROUP BY cmp.company_name

您的语法已关闭。您需要在GROUP BY之前设置WHERE子句。此外,如果要将日期指定为YYYY-MM-DD格式的字符串,则可以添加关键字;0,以将该值视为日期类型而不是字符串。

SELECT cmp.company_name, SUM (inv.total_price), MAX (inv.invoice_date)
FROM companies cmp JOIN invc_header inv ON cmp.cmp_auto_key = inv.cmp_auto_key
WHERE inv.invoice_date = date '2017-01-27'
GROUP BY cmp.company_name;

最新更新