【发布时间】:2019-08-29 10:33:55
【问题描述】:
我有ID_BB_SECURITY 列,其中日期值存储在此列中,例如'20190801'。
我想从这个字段中获取月份数,例如八月的日期,我想得到 8。
我尝试了下面的查询,但它抛出了一个错误“文字不匹配”:
select to_number(to_date(ID_BB_SECURITY),'mm') from BT_EXPORT
我不确定是否必须忽略空值以避免错误
【问题讨论】:
-
(ID_BB_SECURITY / 100) % 100?%应该是模数。如果它不起作用,请使用 MOD()。 -
永远不要将 DATE 值存储在 VARCHAR 或 NUMBER 列中。使用 DATE 列
-
to_date(ID_BB_SECURITY)将使用NLS_DATE_FORMAT会话参数作为格式模型将字符串转换为日期;如果不匹配,那么您将收到错误消息(并且用户可以单独设置自己的会话参数,因此您永远不应该依赖默认值)。相反,您应该明确提供格式模型,例如:to_date(ID_BB_SECURITY, 'YYYYMMDD' )。 -
不明白谁以及为什么给我的帖子带来负面影响?是否有什么不可读或问题不清楚?
-
我已经编辑了我的问题,因为我在不知道任何原因的情况下收到了负面反馈点