如何使用Oracle获取DATE的年和月

cigdeys3  于 2022-11-03  发布在  Oracle
关注(0)|答案(4)|浏览(171)

如何使用Oracle在where子句中获取日期的年份和月份。
我曾经使用SQL服务器,它就像年(字段名)和月(字段名)一样简单。
我已尝试以下方法:

SELECT * 
FROM myschema.mytablename
WHERE   EXTRACT(YEAR FROM  myDATE)  = 2017

但它会产生ORA-30076错误

u3r8eeie

u3r8eeie1#

您是否尝试过EXTRACT()?

SELECT EXTRACT(YEAR FROM DATE '2017-12-01') FROM DUAL;
2017

SELECT EXTRACT(MONTH FROM DATE '2017-12-01') FROM DUAL;
12

我在11g的sql fiddle中试过这个,它在WHERE子句中也能工作。
http://sqlfiddle.com/#!4/fb2b09/2

2w3rbyxf

2w3rbyxf2#

SELECT * 
FROM myschema.mytablename
WHERE   TO_CHAR(myDATE, 'YYYY') = '2017';

将DATE的年份部分显式转换为CHAR并将其与文字进行比较。对于年份和月份比较:

SELECT * 
    FROM myschema.mytablename
    WHERE   TO_CHAR(myDATE, 'YYYY') = '2017' AND TO_CHAR(myDate, 'MM') = '07';
slhcrj9b

slhcrj9b3#

您的查询应该可以工作,但更好的替代方法是

SELECT *
  FROM YOUR_TABLE
  WHERE MY_DATE BETWEEN TO_DATE('01-JAN-2017', 'DD-MON-YYYY')
                    AND TO_DATE('01-JAN-2018', 'DD-MON-YYYY') - INTERVAL '1' SECOND

祝你好运

b4wnujal

b4wnujal4#

我用函数EXTRACT()完成了这个过程,它对我来说很好用。
我将在这里分享查询代码:

SELECT extract(YEAR from s.CREATE_DATE) as YEAR, extract(MONTH from s.CREATE_DATE) as MONTH, s.SALES_PERSON_GID, COUNT(s.SALES_ORDER_ID) as "TOTAL ORDERS" FROM SALES_ORDERS s, SALES_ORDER_STATUS ss WHERE s.SALES_ORDER_ID = ss.SALES_ORDER_ID and ss.STATUS_TYPE_ID = 'SALE ORDER STATUS' and ss.STATUS_VALUE_GID = 'SALE ORDER STATUS_DELIVERED' GROUP BY  s.SALES_PERSON_GID,s.CREATE_DATE

相关问题