显示租赁开始日期在2010年1月1日至2015年1月(含)之间的所有租赁的租户名称和物业地址



SELECT LEASE_NO从租赁其中STDATE>=2010年1月1日AND ENDDATE<=2015-01-01;

告诉我这个错误ORA-00932:不一致的数据类型:预期日期得到编号

使用DATE文字:

SELECT LEASE_NO
FROM   LEASE
WHERE  STDATE  >= DATE '2010-01-01'
AND    ENDDATE <= DATE '2015-01-01';

或者将TO_DATE与字符串文字和显式格式模型一起使用:

SELECT LEASE_NO
FROM   LEASE
WHERE  STDATE  >= TO_DATE('2010-01-01', 'YYYY-MM-DD') 
AND    ENDDATE <= TO_DATE('2015-01-01', 'YYYY-MM-DD');

您的代码不起作用,因为2010-01-01被解析为数字2010,然后减去数字01(简化为1(,然后减去另一个数字01(再次简化为1(,因此您的SQL语句有效地为:

SELECT LEASE_NO
FROM   LEASE
WHERE  STDATE >= 2008
AND    ENDDATE <= 2013;

你无法将日期与数字进行比较,这就是你出现错误的原因:

ORA-00932: inconsistent datatypes: expected DATE got NUMBER

注:

不要只是";在日期值周围加上单引号"因为这会将它们更改为字符串而不是日期,然后您将依赖于依赖于NLS_DATE_FORMAT会话参数的隐式字符串到日期转换,并且您可能(使用默认NLS设置(会收到错误。

例如:

SELECT LEASE_NO
FROM   LEASE
WHERE  STDATE >= '2010-01-01'
AND    ENDDATE <= '2015-01-01';

默认NLS_DATE_FORMATDD-MON-RR,给出错误:

ORA-01861: literal does not match format string

db<gt;小提琴这里

最新更新