您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

只需使用:TO_CHAR( tbl.col, 'IW' )

您有多个问题:

数据类型为“日期”

调用TO_DATE( string, format_model )DATE(不是VARCHAR2),这将导致甲骨文做的隐式转换DATEVARCHAR2使用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' )

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

    SELECT TO_CHAR( TO_DATE( '19-Jun-17', 'YYYY/MM/DD' ), 'YYYY-MM-DD' ) AS dt
FROM   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
SQLServer 2022/1/1 18:53:13 有351人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶