sql - Oracle SQL - 为什么选择 to_char(to_date('31-DEC-18'),'YYYY-IW') from dual; 返回 2018-01?
问题描述
使用Oracle SQL时,为什么select语句
select to_char(to_date('31-DEC-18'), 'YYYY-IW')
from dual;
返回“2018-01”?
我知道“IW”使用的是我想要使用的 ISO 标准,但据我的研究表明,根据 ISO 标准,2018 年 12 月 31 日发生在 2019 年的第 1 周。所以我明白为什么select语句为'IW'返回'01',但为什么它为'YYYY'返回'2018'?该语句不应该返回“2019-01”吗?
对于我使用的数据,最好使用 IW 而不是 WW。
解决方案
IYYY
根据Oracle 文档,您可能需要的是 ISO 年份格式:
SQL> select to_char( date '2018-12-31', 'IYYY-IW')
2 from dual;
TO_CHAR
-------
2019-01
顺便说一句,通过写作,to_date('31-DEC-18')
您依赖于一些假设,这可能并不总是正确的;一种更安全的日期书写方式是 ANSI 格式:date '2019-12-31'
推荐阅读
- google-docs-api - 无效的 ReplaceNamedRangeContent 请求
- bash - :- 在 Bash 中的冗余使用?
- python - 有没有一种pythonic方法可以从列表或numpy数组中采样N个连续元素
- linux - bash: ./shelllab2.sh: 没有这样的文件或目录
- parallel-processing - 推力::减少的总和值不正确
- python - jupyter lab 没有像文档中那样在 CMD 中的 jupyter-lab 上打开
- c - 在 C 中从内存中写入文件
- python - pygame-如何检查是否与数组中的任何矩形发生冲突?
- asp.net - 将 ViewBag 结果绑定到 Html 下拉列表
- ios - 如何在 KivyMD 中创建选择列表