Oracle SQL TO_TIMESTAMP_TZ 格式问题 ORA-01843: 不是有效月份
Oracle SQL TO_TIMESTAMP_TZ Format issue ORA-01843: not a valid month
我有一个以下格式的 TABLEA(更新的列已针对 UTC 调整了 Pacific TZ)
Status
Updated
Complete
09/Mar/2021 08:27:30AM -1100
Apps Tasks
04/Mar/2021 12:42:12AM -1100
Complete
11/Mar/2021 09:27:30AM -1100
Complete
12/Feb/2021 10:27:30AM -1100
我使用了下面的查询并按预期获得了数据,但似乎我弄乱了 date/Timestamp 格式,因为当我使用下面的查询时在 Oracle Apex 中得到“ORA-01843:不是有效月份”生成 graph.I 一直在用 to_date、to_char、trunc 和 TO_TIMESTAMP_TZ 和 NLS_LANGUAGE 的组合调整查询,但似乎在 circle.Any 如果我在查询的格式中遗漏了某些内容,我们将不胜感激?
select TRUNC(TO_TIMESTAMP_TZ(UPDATED),'MONTH') AS Month,COUNT(STATUS) AS "Complete" FROM TABLEA
where STATUS='Complete'
group by TRUNC(TO_TIMESTAMP_TZ(UPDATED), 'MONTH')
order by TRUNC(TO_TIMESTAMP_TZ(UPDATED), 'MONTH')
MONTH
Complete
02/01/2021
1
03/01/2021
2
谢谢
首先,您应该修复数据模型以使用适当的时间戳 存储 date/time 值,这不是字符串 。
其次,我会 return 使用日期的结果:
select trunc(to_date(substr(update, 1, 11), 'DD/MMM/YYYY'), 'MON') as yyyymm,
count(*)
from t
group by trunc(to_date(substr(update, 1, 11), 'DD/MMM/YYYY'), 'MON');
当然,您可以使用 to_char()
设置第一列的格式。但是,我想强调您的数据和代码应该使用 date
s 或 timestamp
s.
我有一个以下格式的 TABLEA(更新的列已针对 UTC 调整了 Pacific TZ)
Status | Updated |
---|---|
Complete | 09/Mar/2021 08:27:30AM -1100 |
Apps Tasks | 04/Mar/2021 12:42:12AM -1100 |
Complete | 11/Mar/2021 09:27:30AM -1100 |
Complete | 12/Feb/2021 10:27:30AM -1100 |
我使用了下面的查询并按预期获得了数据,但似乎我弄乱了 date/Timestamp 格式,因为当我使用下面的查询时在 Oracle Apex 中得到“ORA-01843:不是有效月份”生成 graph.I 一直在用 to_date、to_char、trunc 和 TO_TIMESTAMP_TZ 和 NLS_LANGUAGE 的组合调整查询,但似乎在 circle.Any 如果我在查询的格式中遗漏了某些内容,我们将不胜感激?
select TRUNC(TO_TIMESTAMP_TZ(UPDATED),'MONTH') AS Month,COUNT(STATUS) AS "Complete" FROM TABLEA
where STATUS='Complete'
group by TRUNC(TO_TIMESTAMP_TZ(UPDATED), 'MONTH')
order by TRUNC(TO_TIMESTAMP_TZ(UPDATED), 'MONTH')
MONTH | Complete |
---|---|
02/01/2021 | 1 |
03/01/2021 | 2 |
谢谢
首先,您应该修复数据模型以使用适当的时间戳 存储 date/time 值,这不是字符串 。
其次,我会 return 使用日期的结果:
select trunc(to_date(substr(update, 1, 11), 'DD/MMM/YYYY'), 'MON') as yyyymm,
count(*)
from t
group by trunc(to_date(substr(update, 1, 11), 'DD/MMM/YYYY'), 'MON');
当然,您可以使用 to_char()
设置第一列的格式。但是,我想强调您的数据和代码应该使用 date
s 或 timestamp
s.