【发布时间】:2021-11-15 04:01:30
【问题描述】:
我的输出没有 where 子句(示例)
| ID | NAMEN | NAME | BEGINN | ENDE |
|---|---|---|---|---|
| 108129 | Kürbis, Gartenkürbis, Feldkürbis | Blüten | Juli | Juli |
| 126611 | Nussbaum, Walnuss, Christnuss | Schalen | August | September |
| 126611 | Nussbaum, Walnuss, Christnuss | Früchte | Oktober | Oktober |
| 126611 | Nussbaum, Walnuss, Christnuss | Blätter | Juni | Juni |
| 92542 | Beifuß Stabkraut, Besenkraut | Blätter | Juni | Juni |
| 92542 | Beifuß Stabkraut, Besenkraut | Wurzeln | September | November |
您好,我尝试在 beginn(例如 Juli)和 ende(例如 Dezember)(varchar2) 之间选择条目。
select * from (
select * from VIEW_USER_CON_PFLANZE_ERNTE
)
where sysdate
between to_date(beginn, 'MONTH', 'NLS_DATE_LANGUAGE=German')
and to_date(ende, 'MONTH', 'NLS_DATE_LANGUAGE=German')
但我收到错误:ORA-01843: not a valid month
最后,我想实现这一点:
where sysdate
...
and last_day(to_date(ende, 'DD.MONTH', 'NLS_DATE_LANGUAGE=German'))
从双重作品中选择to_date(beginn, 'MONTH', 'NLS_DATE_LANGUAGE=German')* and *to_date(ende, 'MONTH', 'NLS_DATE_LANGUAGE=German'),我得到两者的 MM/DD/YYYY
【问题讨论】:
-
beginn和ende已经是日期数据类型了吗?如果是,您可以使用 EXTRACT 函数而不是 TO_DATE。 -
抱歉,没有它的 varchar2
-
请提供一些存储在这些字段中的示例数据。
-
请edit your question将该数据添加为格式化文本。视图查询是否也在自己将字符串转换为日期 - 使用会话数据语言?
-
不管您的直接问题是什么,您是否意识到像您一样在月份名称上使用
to_date将不包括七月,例如,如果@ 987654329@ 是'Juli'?to_date您调用它的方式将返回当年的 7 月 1 日,时间 00:00:00 - 这意味着“在……和……之间”将是“在……和 7 月 1 日午夜之间” - 在 7 月省略任何内容(7 月 1 日午夜除外)。
标签: sql oracle date where-clause between