我是SQL和学习的新手。目前我正在使用Select语句仅显示当月的订单。我正在使用
SELECT
ORDERS.ORDERID,
ORDERS.CUSTOMERID,
ORDERS.ORDERDATE,
ORDERS.SHIPDATE
FROM
ORDERS
WHERE Date >= '01-JAN-16' and Date <= '31-JAN-16'
但是无效的关系运算符
失败了我哪里错了?
感谢您的帮助!
答案 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)