oracle标准化日期问题

letqqqgo 2014-12-22 01:10:21
请教各位朋友,oracle有没有办法获取到IW对应的ISO标准月呢?

希望有朋友能帮忙补充年月:
SELECT TRUNC(TO_DATE('20140105','YYYYMMDD'),'IW') 日期,
--年月 ISOS标准化,期望得到201401
TO_CHAR(TRUNC(TO_DATE('20131230','YYYYMMDD'),'IW'),'IYYYIW') 年周,
TO_CHAR(TRUNC(TO_DATE('20140105','YYYYMMDD'),'IW'),'IW') 当年所在周,
TO_CHAR(TRUNC(TO_DATE('20140105','YYYYMMDD'),'IW'),'W') 所在月中的周次
FROM DUAL;
...全文
252 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-12-22
  • 打赏
  • 举报
回复
什么才是理想的结果
letqqqgo 2014-12-22
  • 打赏
  • 举报
回复
引用 6 楼 Tiger_Zhao 的回复:
这不是格式的问题,而是你想要什么? 按照 '20140105' 求 '201401',直接取前6个字符不就行了! 如果要求周一日期的,用 TO_CHAR(TRUNC(TO_DATE('20140105','YYYYMMDD'),'IW'),'YYYYMM')。 反正 TRUNC 用了 IW,TO_CHAR 中就不用 I 格式的。否则直接 TO_CHAR 用 I 格式。 自己想清楚,需要哪个结果!!!
要有个周的区间,比如12.30-1.5周属一周,直接截的话不理想
Tiger_Zhao 2014-12-22
  • 打赏
  • 举报
回复
这不是格式的问题,而是你想要什么?
按照 '20140105' 求 '201401',直接取前6个字符不就行了!
如果要求周一日期的,用 TO_CHAR(TRUNC(TO_DATE('20140105','YYYYMMDD'),'IW'),'YYYYMM')。
反正 TRUNC 用了 IW,TO_CHAR 中就不用 I 格式的。否则直接 TO_CHAR 用 I 格式。
自己想清楚,需要哪个结果!!!
letqqqgo 2014-12-22
  • 打赏
  • 举报
回复
引用 3 楼 letqqqgo 的回复:
按周一为周开始算
另外用IYYYMM是很容易出问题的 日期 年月 年周 当年所在周 所在月中的周次 2013/12/30 201412 201401 01 5
letqqqgo 2014-12-22
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
月份没有ISO和普通的区别,都是 MM 格式。 所以年月用 IYYYYMM 或 YYYYMM,就看你需要哪个了。
主要是要知道周和月对应
letqqqgo 2014-12-22
  • 打赏
  • 举报
回复
按周一为周开始算
Tiger_Zhao 2014-12-22
  • 打赏
  • 举报
回复
月份没有ISO和普通的区别,都是 MM 格式。
所以年月用 IYYYYMM 或 YYYYMM,就看你需要哪个了。
bw555 2014-12-22
  • 打赏
  • 举报
回复
这个iso月怎么算?本周在哪个月的天数多就算在哪个月?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧