如何使用Oracle在where子句中获取日期的年月。如何使用Oracle获取DATE的年份和月份
我曾经使用过SQL服务器,它和YEAR(FIELDNAME)和MONTH(FIELDNAME)一样简单。
我曾尝试以下:
SELECT *
FROM myschema.mytablename
WHERE EXTRACT(YEAR FROM myDATE) = 2017
但是它给了ORA-30076错误
如何使用Oracle在where子句中获取日期的年月。如何使用Oracle获取DATE的年份和月份
我曾经使用过SQL服务器,它和YEAR(FIELDNAME)和MONTH(FIELDNAME)一样简单。
我曾尝试以下:
SELECT *
FROM myschema.mytablename
WHERE EXTRACT(YEAR FROM myDATE) = 2017
但是它给了ORA-30076错误
您是否尝试过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小提琴中试过这个,它也在WHERE子句中工作。
我需要这个在我的where子句中。可能吗? – user2597012
你可以尝试SELECT * FROM table_name WHERE some_field_name = EXTRACT(YEAR FROM DATE date_field_name);基本上,提取函数将从给定的字段名称中提取请求的日期属性。 – JRG
我试过了,它给ORA-30076错误。 – user2597012
您的查询应该工作,但更好的选择将是
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
好运。
SELECT *
FROM myschema.mytablename
WHERE TO_CHAR(myDATE, 'YYYY') = '2017';
显式地转换日期的年份部分为CHAR,并与文字相比较。 对于年份和月份比较:
SELECT *
FROM myschema.mytablename
WHERE TO_CHAR(myDATE, 'YYYY') = '2017' AND TO_CHAR(myDate, 'MM') = '07';
它连接到Oracle 11g – user2597012
什么'myDATE'的数据类型? –