栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Oracle SQL:从日期中提取一年中的星期将得出随机结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Oracle SQL:从日期中提取一年中的星期将得出随机结果

[TL; DR] 只需使用:

TO_CHAr( tbl.col, 'IW' )

您有多个问题:

  1. 数据类型为“日期”

您调用

TO_DATE( string, format_model)
DATE
(不是
VARCHAR2
),这将导致甲骨文做的隐式转换
DATE
VARCHAR2
使用
NLS_DATE_FORMAT
会话参数作为格式的模型,所以您可以将其转换回
DATE
。因此,您实际上在做:

    TO_CHAr(  TO_DATE(    TO_CHAr(      tbl.col,      ( SELECt VALUE FROM NLS_SESSION_PARAMETERS WHERe PARAMETER = 'NLS_DATE_FORMAT' )    ),    'YYYY/MM/DD'  ),  'IW')

不要这样做 ,只需使用:

    TO_CHAr( tbl.col, 'IW' )

如果这样做,则以下问题无关紧要。

  1. 正如RealCheeseLord指出的那样,格式模型中的年和日的位置是相反的。和
  2. 您正在使用
    YYYY
    年格式模型,因此所有年份都将出现在公元1世纪。

范例

    SELECt TO_CHAr( TO_DATE( '19-Jun-17', 'YYYY/MM/DD' ), 'YYYY-MM-DD' ) AS dtFROM   DUAL

输出

    DT----------0019-06-17

如果您不打算修复隐式字符串转换,那么您可能会想要:

    TO_CHAr(TO_DATE(tbl.col,'DD-MON-YY'),'IW') AS week

或(取决于您希望99年是1999年还是2099年):

    TO_CHAr(TO_DATE(tbl.col,'DD-MON-RR'),'IW') AS week
  1. 您正在将
    MM
    格式模型用于
    MON
    格式化的数据-这不一定是MM匹配MON``MONTH的问题,但您可能应该使用正确的模型。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号