尝试加入提取日期和月份时出现 SQL 错误
Posted
技术标签:
【中文标题】尝试加入提取日期和月份时出现 SQL 错误【英文标题】:SQL error when trying to join the extract date and month 【发布时间】:2018-11-16 21:21:21 【问题描述】:我正在尝试运行下面的查询并收到错误
select
le.a_code,
le.pr,
le.pdate
CASE EXTRACT(YEAR FROM le.pdate) || EXTRACT(MONTH FROM le.pdate)
WHEN TO_NUMBER(le.pr) THEN le.pdate
ELSE TO_DATE('10/31/2018','mm/dd/yyyy')
END
from
load_entry le
where
le.pdate between to_date('01/01/2018', 'mm/dd/yyyy') and to_date('10/31/2018', 'mm/dd/yyyy')
错误:
在预期的地方找不到关键字。
我有 pr (year||month) 和 pe date 。 pe date 不是在同年同月中使用的最后一天。
【问题讨论】:
【参考方案1】:您缺少一个逗号(case
之前)。我是人,所以我总是在 SQL 中将逗号放在 词之后,就像在我编写的任何其他文本中一样。
我强烈建议您了解日期常量的 date
关键字:
select le.a_code, le.pr, le.pdate,
(CASE EXTRACT(YEAR FROM le.pdate) || EXTRACT(MONTH FROM le.pdate)
WHEN TO_NUMBER(le.pr) THEN le.pdate
ELSE DATE '2018-10-31'
END)
from load_entry le
where le.pdate between date '2018-01-01' and date '2018-10-31';
我也不鼓励您将between
用于日期/时间,尤其是在Oracle 中使用date
——因为它总是包含时间组件。所以我会把where
写成:
where le.pdate >= date '2018-01-01' and
le.pdate < date '2018-11-01'
无论有没有时间组件,这都适用(假设您想要 2018-10-31 的值)。
【讨论】:
我怎样才能得到 pr 的日期(比如 pr 是 201809)然后我需要日期 09/30/2018 @user565992 。 . .这听起来像是一个不同的问题。但是,您应该能够以正确的格式使用to_date()
。
我有 201809 期间,我需要基于月份和年份的月份的最后一个日期。以上是关于尝试加入提取日期和月份时出现 SQL 错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 ZipFileSet 提取大 jar 时出现 OutOfMemory 错误
从 SQL On-Demand 端点运行查询时出现 SSMS 错误
尝试在 wordpress javascript 中提取 acf 字段时出现错误