尝试在当月显示结果时,SQL Select Query失败

时间:2016-02-01 00:18:19

标签: sql oracle

我是SQL和学习的新手。目前我正在使用Select语句仅显示当月的订单。我正在使用

SELECT
  ORDERS.ORDERID,
  ORDERS.CUSTOMERID,
  ORDERS.ORDERDATE,
  ORDERS.SHIPDATE
FROM
  ORDERS
WHERE Date >= '01-JAN-16' and Date <= '31-JAN-16'

但是无效的关系运算符

失败了

我哪里错了?

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

这是caz&#39;你的日期格式。更好的方法是下一个查询:

SELECT ORDERS.ORDERID,
       ORDERS.CUSTOMERID,
       ORDERS.ORDERDATE,
       ORDERS.SHIPDATE
  FROM ORDERS
 WHERE EXTRACT(month from date) = 1; --take records for january

答案 1 :(得分:1)

如果字段&#34;日期&#34;实际上是你的字段的名称,你需要在WHERE子句中将其包含在tic标记中,如下所示:

... WHERE `Date` >= '01-JAN-16' and `Date` <= '31-JAN-16'

因为Date是保留字。看起来ORDERDATE和SHIPDATE是您的字段名称...如果您在查询中使用其中一个?另外,请注意日期格式。默认情况下,SQL使用YYYY-MM-DD,但这取决于您设置日期字段的方式。以下是使用表格中的ORDREDATE字段的示例...

SELECT ORDERS.ORDERID,ORDERS.CUSTOMERID,ORDERS.ORDERDATE,ORDERS.SHIPDATE FROM ORDERS WHERE date(ORDERDATE) >= "2016-01-01" and date(ORDERDATE) <= "2016-01-31";

答案 2 :(得分:0)

DATE是保留字。您应该使用双引号来转义保留字。

尝试WHERE&#34; date&#34; = ...

但我认为你没有使用正确的colum名称来表达你的病情。

在哪里ORDERDATE = ...

您还可以查看日期格式。

答案 3 :(得分:0)

您需要指定有效的日期文字:

SELECT
  ORDERS.ORDERID,
  ORDERS.CUSTOMERID,
  ORDERS.ORDERDATE,
  ORDERS.SHIPDATE
FROM
  ORDERS
WHERE ORDERS.ORDERDATE BETWEEN DATE '2016-01-01' and DATE '2016-01-31'

或者您根据今天计算日期范围:

SELECT
  ORDERS.ORDERID,
  ORDERS.CUSTOMERID,
  ORDERS.ORDERDATE,
  ORDERS.SHIPDATE
FROM
  ORDERS
WHERE ORDERS.ORDERDATE >= TRUNC(CURRENT_DATE, 'MON') 
  AND ORDERS.ORDERDATE < ADD_MONTHS(TRUNC(CURRENT_DATE, 'MON'), 1)