在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代表周一....
文章出自:http://hi.baidu.com/j2ee_cn/blog/item/ce3ea42fd1c201301e308971.html
分享到:
相关推荐
Oracle数据库系统提供了丰富的日期函数,用于处理和格式化日期和时间数据。这些函数在数据库查询、报表生成以及各种业务逻辑中扮演着重要角色。本文将详细介绍Oracle中的常见日期函数及其用法。 首先,我们来看看...
Oracle 日期函数是 Oracle 数据库中的一组功能强大且广泛使用的函数,它们可以对日期进行各种操作和计算,本次练习涵盖了 Oracle 中常用的日期函数,包括获取当前系统时间、对日期的月进行加减、获取给定日期所在月...
在Oracle数据库中,获取下一个法定工作日期是一个常见的需求,尤其在进行日程安排或业务处理时。本篇文章将深入探讨如何使用Oracle内置函数以及...希望这篇文章对你理解和使用Oracle函数来处理工作日期问题有所帮助。
`NEXT_DAY`函数用于找到指定日期之后的第一个指定星期几的日期: ```sql SELECT NEXT_DAY(SYSDATE, 'MONDAY') "Next Monday" FROM dual; ``` 以上内容涵盖了Oracle日期函数的基础和进阶使用技巧,希望对初学者掌握...
Next_day 函数用于计算下一个指定的日期。例如: ```sql SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM DUAL; ``` 这将输出下一个星期一的日期。 11. 获得小时数 使用 EXTRACT 函数可以获得小时数。例如: ```sql ...
- **NEXT_DAY(date, day)**: 返回指定日期之后的下一个指定星期几的日期。 - **MONTHS_BETWEEN(date1, date2)**: 计算两个日期之间的月份数。 - **TRUNC(date[, format])**: 返回指定格式的日期部分。 - **TO_DATE...
Oracle数据库系统提供了丰富的日期时间处理函数,用于对日期和时间数据进行操作和转换。在Oracle中,日期数据类型包括DATE,而时间戳则包括TIMESTAMP。以下是一些关键的Oracle日期时间函数及其用法: 1. **日期和...
- `NEXT_DAY(date, day_of_week)`:返回指定日期后的第一个特定星期几。 - `EXTRACT(part FROM date_expression)`:提取日期或时间表达式中的部分(如年、月、日、小时、分钟等)。 在实际应用中,这些函数常常与...
Oracle数据库系统中,日期函数是进行时间数据处理的关键工具,对于数据库管理员和开发人员来说,理解和熟练使用这些函数至关重要。本篇文章将全面总结Oracle中的日期函数,帮助你解决日常工作中遇到的各种日期处理...
### ORACLE常用日期函数集合详解 #### 一、概述 在Oracle数据库中,日期处理是一项非常重要的功能。本文将详细介绍一些常用的Oracle日期函数及其应用场景,帮助数据库管理员或开发者更好地理解和运用这些函数,以...
- **Next_day**: 查找指定日期后的第一个指定星期的日期。 - **闰年处理**: 检测并处理闰年相关的问题。 ### 第四章 转换函数 转换函数用于在不同的数据类型之间进行转换。 - **chartorowid**: 将字符串转换为...
LAST_DAY------------31-OCT-2133.CURRENT_DATE和LOCALTIMESTAMP这两个函数返回当前系统时间,但CURRENT_DATE返回日期,LOCALTIMESTAMP返回日期和时间(包括时区信息);SQL> select current_date today, ...
- `NEXT_DAY/N/A`: Oracle 的函数用于找到日期后的下一个指定天(如周日),SQL Server 没有直接等价函数。 - `TO_CHAR/DATENAME`: Oracle 将日期转换为字符串,SQL Server 使用 `DATENAME`。 - `TO_NUMBER (TO_...
除了以上介绍的功能,Oracle还提供了其他日期处理函数,如 `add_months`、`trunc`、`last_day` 等,它们可以帮助进行日期的增加、截断和找到月份的最后一天等操作。熟练掌握这些函数,能极大地提高在数据库中处理...
在Oracle数据库中,函数是处理数据的强大工具,可以用于数据转换、数学运算、日期操作、字符串处理等。以下是从给定文件中提炼出的一些Oracle常用函数及其应用详解: ### ASCII和CHR函数 - **ASCII**: 返回一个...
NEXT_DAY 函数返回日期 d 的下一个指定周几的日期。 示例代码: ```sql SELECT SYSDATE AS THIS_DAY, NEXT_DAY(SYSDATE, 7) AS NEXT_SAT FROM dual; ``` 结果: ``` THIS_DAY NEXT_SAT ------------------- -------...
1. **日期和时间函数**:Oracle中的ADD_MONTHS、LAST_DAY、NEXT_DAY等在orafce中都有对应的实现,帮助用户处理日期和时间数据。 2. **字符串函数**:诸如 INITCAP、SUBSTR、INSTR等在PostgreSQL中也有相应的实现,...
- **NEXT_DAY**: 获取下一个指定工作日的日期。 - 示例:`NEXT_DAY('06-2月-03','星期一')` 返回 `10-2月-03` - **LAST_DAY**: 获取指定日期所在月份的最后一天。 - 示例:`LAST_DAY('06-2月-03')` 返回 `28-2月-...
ORACLE 中日期和时间函数汇总 Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个...