sql - Oracle SQL TO_TIMESTAMP_TZ 格式问题 ORA-01843: not a valid month
问题描述
我有一个以下格式的 TABLEA(更新的列已根据 UTC 调整了太平洋 TZ)
地位 | 更新 |
---|---|
完全的 | 2021 年 3 月 9 日上午 08:27:30 -1100 |
应用程序任务 | 2021 年 3 月 4 日 12:42:12AM -1100 |
完全的 | 2021 年 3 月 11 日上午 9:27:30 -1100 |
完全的 | 2021 年 2 月 12 日上午 10:27:30 -1100 |
我使用了下面的查询,我得到了预期的数据,但是当我使用下面的查询生成图表时,我在 Oracle Apex 中得到“ORA-01843:not a valid month”,似乎我弄乱了日期/时间戳格式。我一直使用 to_date、to_char、trunc 以及 TO_TIMESTAMP_TZ 和 NLS_LANGUAGE 的组合来调整查询,但似乎是在循环中。如果我在查询格式中遗漏了某些内容,任何输入都将不胜感激?
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')
月 | 完全的 |
---|---|
2021 年 2 月 1 日 | 1 |
2021 年 3 月 1 日 | 2 |
谢谢
解决方案
首先,您应该修复数据模型以使用不是字符串的适当时间戳来存储日期/时间值。
其次,我会使用日期返回结果:
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。
推荐阅读
- reactjs - 如何在 Tailwind 和 postcss 中将 Html 内容转换为纯文本
- react-native - 在来电时触发 RNCallKeep.displayIncomingCall() 的最佳方法是什么?
- kubernetes - NodeSelector 不适用于多个节点池?
- c# - 出现滚动条时如何正确应用修改后的 C# WinForm ListBox 边框颜色
- vb.net - 如何进行格式检查?所以输入格式正确。例如 dd/mm/yy。(Visual Basic)
- pandas - 分位数 groupby 熊猫数据框
- javascript - ReactJS中基于创建日期的对象数组的有序显示
- r - Shiny Timevis - 改变行名的位置
- powershell - Powershell中的高级CSV过滤?
- reactjs - MUI:如何以编程方式更新 DataGrid 状态?