我在Oracle SQL练习中遇到了问题

我在Oracle SQL练习中遇到了问题,sql,oracle,between,to-date,Sql,Oracle,Between,To Date,我对Oracle SQL有以下说明: SELECT TO_DATE(FE_DAY || '/' || FE_MO || '/' || FE_YEAR, 'dd/mm/yyyy') FROM TI_DATE WHERE FE_DAY =15 BETWEEN TO_DATE('01/01/2011') AND TO_DATE('31/12/2012') 有效地,我得到了所有包含这段时间间隔之间的日期 但我需要做其他事情 如何显示包含以下内容的所有日期 FE_日=15 FE_MO=02 FE

我对Oracle SQL有以下说明:

SELECT TO_DATE(FE_DAY || '/' || FE_MO || '/' || FE_YEAR, 'dd/mm/yyyy')
 FROM TI_DATE
WHERE FE_DAY =15 BETWEEN TO_DATE('01/01/2011') AND TO_DATE('31/12/2012')
有效地,我得到了所有包含这段时间间隔之间的日期

但我需要做其他事情

如何显示包含以下内容的所有日期

  • FE_日=15

  • FE_MO=02

  • FE_MO=05

  • FE_MO=07

  • 在2011财年和2012财年之间

    TI_日期表


谢谢你的帮助。

我认为你不应该把这些当作日期。只需在
WHERE
子句中实现您的规则:

where (FE_Day = '15' or FE_MO in ('02', '05', '07')) and
      FE_YEAR in ('2011', '2012')

我用单引号将所有内容括起来,因为我猜数据类型是字符。

旁注:不要忽略
TO_DATE()
的第二个参数。默认日期格式不是通用的。只是为了让您知道原始语句中的where子句是错误的。where子句中的谓词需要用
分隔。第二个谓词
之间缺少左边的某物。在01/01和31/12之间,你想成为什么样的人。。。如果这是一个日期维度类型表(给定名称和用法),它是否有实际的“日期”列,而不需要在末尾构造日期?此外,请避免在任何范围内使用
之间,尤其是日期-使用唯一的上限(
“这不是
FE_Day='15'和
中的FE_MO吗?”当然,这意味着外部参数将不可用needed@ConradFrix…当我读到这个问题时,我不确定逻辑是“和”还是“或”.然而,由于这几个月有多个值,它们显然是由“或”s连接起来的。因此,我假设所有的东西都是由“或”s连接起来的。即使我弄错了,这个想法仍然是有用的。我同意这个想法是有用的(这就是为什么我投了更高的票)我猜我的假设是,他们想要某些月份的15张唱片,想要2月、5月和7月的唱片,而只想要其他月份中的15张似乎很奇怪。