SELECT NEXT_DAY(SYSDATE,'MON') FROM DUAL;

提示错误:ORA-01846:周中的日无效

在Oracle是提供了next_day求指定日期的下一个日期.

语法 : next_day( date, weekday )

date is used to find the next weekday.
weekday is a day of the week (ie: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY)

可用于:
Oracle 9i, Oracle 10g, Oracle 11g
For example:

next_day('01-Aug-03', 'TUESDAY') would return '05-Aug-03'
next_day('06-Aug-03', 'WEDNESDAY') would return '13-Aug-03'
next_day('06-Aug-03', 'SUNDAY') would return '10-Aug-03'

但是在执行如下命令时出错,错误提示为不合法的 month,但实际上单词本身并没有错,而是环境问题:

SQL> select next_day('01-Aug-03', 'TUESDAY') from dual;
select next_day('01-Aug-03', 'TUESDAY') from dual
                *
ERROR at line 1:
ORA-01843: not a valid month

分析问题:

首先查询当前日期语言 NLS_DATE_LANGUAGE 值.
SQL>select * from v$nls_parameters;
PARAMETER                                                        VALUE
---------------------------------------------------------------- -----------------------------------
NLS_LANGUAGE                                                     SIMPLIFIED CHINESE
NLS_TERRITORY                                                    CHINA
NLS_CURRENCY                                                     ¥
NLS_ISO_CURRENCY                                                 CHINA
NLS_NUMERIC_CHARACTERS                                           .,
NLS_CALENDAR                                                     GREGORIAN
NLS_DATE_FORMAT                                                  DD-MON-RR
NLS_DATE_LANGUAGE                                                SIMPLIFIED CHINESE
NLS_CHARACTERSET                                                 ZHS16GBK
NLS_SORT                                                         BINARY
NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM

PARAMETER                                                        VALUE
---------------------------------------------------------------- -----------------------------------
NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY                                                ¥
NLS_NCHAR_CHARACTERSET                                           AL16UTF16
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                             BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE

经过查询,发现NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE

解决办法:

1 . 改写命令
SQL>select next_day(sysdate,'星期一') from dual;

NEXT_DAY(SYSDA
--------------
23-3月 -09

2. 修改当前会话NLS_DATE_LANGUAGE值为AMERICAN

SQL> alter SESSION set NLS_DATE_LANGUAGE=AMERICAN ;

Session altered.

SQL> select next_day(sysdate,'tuesday') from dual;

NEXT_DAY(SYS
------------
24-MAR-09

SQL>

除此之外,还有注意的问题:

如果今天是星期二,如果要查询下一个 星期二,则为下周的星期二;如果要查询下一个星期三,要注意,返回值是这个周的星期三,强烈建议大家试一下,最能说明问题.从查询下一个周三开始,到下一个周六,返回的值都是这个周的周三到周六。

如果要把日期语言修改为简体中文命令如下,注意要把SIMPLIFIED CHINESE用单引号括起来,因为空格不属于合法的标识符.
alter SESSION set NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE'

在实际应用是发现,next_day第二个参数使用数字也行,其1 代表周日,2代表周一....

ORA-01846:周中的日无效相关推荐

  1. oracle周中的日无效,Oracle错误ora-01846 周中的日无效

    这种情况很常见,而且可以举一反三 (一)错误表现 (1)PL/SQL上运行: SELECT last_name,hire_date,  NEXT_DAY(ADD_MONTHS(hire_date, 6 ...

  2. oracle周中的日无效,ORA-01846: 周中的日无效

    症状:执行SQL提示"ORA-01846: 周中的日无效" select to_date('Sun Aug 23 00:05:13 2009','Dy Mon DD HH24:MI ...

  3. oracle周中的日无效,【填坑】ORA-01846 周中的日无效

    在数据库迁移过程有如下时间格式: Sun Jul 22 18:14:38 CST 2018 格式化为DATE: TO_DATE('Sun Jul 22 18:14:38 CST 2018','Dy M ...

  4. 解决问题:ORA-01846--周中的日无效

    一. 报错代码是:ORA-01846:周中的日无效     这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的"星期一" 如果不想修改sql,那么请修改nls ...

  5. LeetCode 1185. 一周中的第几天 / 913. 猫和老鼠(博弈,动态规划) / 1576. 替换所有的问号

    1185. 一周中的第几天 2022.1.3 每日一题 题目描述 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天. 输入为三个整数:day.month 和 year,分别表示日.月.年. ...

  6. 1月第4周中美五大顶级域名总量涨幅相近 均有5.4万个

    IDC评述网(idcps.com)02月04日报道:据WebHosting.info公布的最新数据显示,在1月第4周,中国五大顶级域名总量突破930万,达到9,346,707个,净增54,613个,涨 ...

  7. 1185. 一周中的第几天 golang

    1185. 一周中的第几天 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天. 输入为三个整数:day.month 和 year,分别表示日.月.年. 您返回的结果必须是这几个值中的一个 { ...

  8. LeetCode 1185. 一周中的第几天

    1. 题目 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天. 输入为三个整数:day.month 和 year,分别表示日.月.年. 您返回的结果必须是这几个值中的一个 {"Su ...

  9. 开源 非开源_开源周中的女性

    开源 非开源 欢迎来到Opensource.com的"开源女性周" Opensource.com将从1月27日至2月7日重点介绍女性在开源方面的努力.我们将把我们的某些内容专门针对 ...

最新文章

  1. HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
  2. oracle tranc,ORACLE TRUNC()函数
  3. python 处理xml pandas_Python数据处理分析,解决pandas中所有的Excel疑难杂症(上)
  4. 面试项目亮点_码农:面试被问到自己项目亮点时,感觉自己的回答虚伪的不行!...
  5. sql脚本比较大,sqlserver 无法导入,就用cmd命令执行
  6. 刷新率调高,或高于60Hz闪屏,忽明忽暗,晃动问题
  7. Matlab基本数学应用
  8. matlab memorySian,matlab内存溢出的解决方案
  9. ax200黑苹果蓝牙驱动_家庭网络升级计划篇一:将无线进行到底,AX200网卡升级体验...
  10. 翻译: Keras 标准化:TensorFlow 2.0 中高级 API 指南
  11. c语言一些简单的程序
  12. oracle软件 乱码,oracle 中文乱码解决办法
  13. BF模式匹配算法!字符串的模式匹配。
  14. 源代码(二)_尚学堂学习
  15. 《道德经》新解(上篇)
  16. Android--- Drawer and Tab Navigation with ViewPager
  17. cscd期刊是c刊吗_核心期刊和C刊有什么区别
  18. 【云速建站如何个人备案】
  19. 常用ASCII URL编码对照表,JavaScript中如何把url的%20、%22、%28、%29、%7B、%7D解析还原成真实的字符
  20. HMMer在Windows环境下的安装

热门文章

  1. opencv(python)使用knn最近邻算法识别手写数字
  2. 带分数(全排列详解)
  3. 微信端跳转外部浏览器进行apk文件下载的实现原理及源码
  4. signature=2de078bcab8d9bebbe2dbc92c930a7ec,Storage device assisted data de-duplication
  5. MRD 和PRD的区别
  6. 有关结构体排序(在其内部利用运算符重新定义,比较器)
  7. 求弹性模量和泊松比计算题_弹性模量越大说明什么?弹性模量和泊松比
  8. 线上故障分析-故障分级,原因,分类,混沌工程,排除方法
  9. 微软.net精简框架最常见问题
  10. 解决小程序onReachBottom在同屏只能触发一次的问题