【发布时间】:2021-03-24 09:57:28
【问题描述】:
我正在尝试在 Oracle 中运行此查询,因为我需要提取日期在上个月相对于 sysdate 的数据。这是我写的:
SELECT ID, BALANCE, DATE
FROM MY_TABLE
WHERE TRUNC(DATE, 'mm') = TRUNC(ADD_MONTHS((SYSDATE),-1),'mm');
查询不起作用并返回以下消息:
inconsistent datatypes: expected NUMBER got DATE.
谁能帮我解决这个问题?
【问题讨论】:
-
无法复制您的问题db<>fiddle。请edit 您的问题添加minimal reproducible example 与:
my_table表的 DDL (CREATE TABLE) 语句;以及用于演示问题的示例数据的 DML (INSERT) 语句。 -
看起来你的“日期”列实际上是一个字符串,这不是一个好主意。 (您可以在this modified db<>fiddle 上看到相同的错误。)将列数据类型更改为实际日期,或者如果由于某种原因确实不能,则需要在截断之前将该字符串转换为日期。
-
请提供样本数据和期望的结果。明确
date的数据类型。 -
"我的日期字段是 NVARCHAR(2)" - 那么你在这两个字符中持有什么;一个月数?您是否还有另一列包含年份数字?