SELECT TRUNC(TO_DATE('27-OCT-92','DD-MON-YY'), 'YEAR') "New Year" FROM DUAL;返回什么呀?

every_one 2003-07-03 08:42:49
这是我从ORACLE官方网站上看到的SQL语句,执行的时候竟然提示:ERROR 位于第 1 行:
ORA-01843: 无效的月份

但是,官方网站上给的运行结果是:
TRUNC (date function)
Syntax
Purpose
TRUNC returns d with the time portion of the day truncated to the unit specified by
the format model fmt. If you omit fmt, d is truncated to the nearest day.
See Also: "ROUND and TRUNC Date Functions" on page 4-127
for the permitted format models to use in fmtNew Year
Example
SELECT TRUNC(TO_DATE(’27-OCT-92’,’DD-MON-YY’), ’YEAR’)
"New Year" FROM DUAL;
New Year
---------
01-JAN-92

到底这个函数是啥意思呀?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
every_one 2003-07-03
  • 打赏
  • 举报
回复
明白,thx
bzszp 2003-07-03
  • 打赏
  • 举报
回复
中文字符集
可能都显示
*月
every_one 2003-07-03
  • 打赏
  • 举报
回复
这么说和操作系统还有关系?那为什么我复制你写的SQL语句在我的机子上执行的结果就不一样?
bzszp 2003-07-03
  • 打赏
  • 举报
回复
08:52:59 SQL> alter session set nls_date_format='yyyy-mon-dd';

会话已更改。

实际:20
08:54:12 SQL> select TRUNC(TO_DATE('27-10月-1992','dd-mon-yyyy'),'yyyy') from dual;

TRUNC(TO_DAT
------------
1992-1月 -01

实际:20
08:54:17 SQL> 跟你的一样了吧

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

bzszp 2003-07-03
  • 打赏
  • 举报
回复
用中文就行了
08:52:22 SQL> select TRUNC(TO_DATE('27-10月-1992','dd-mon-yyyy'),'yyyy') from dual;

TRUNC(TO_DATE('27-1
-------------------
1992-01-01 00:00:00

实际:20
08:52:59 SQL>
every_one 2003-07-03
  • 打赏
  • 举报
回复
SQL> SELECT TRUNC(sysdate,'YY') from dual;

TRUNC(SYSD
----------
01-1月 -03

怎么和你的不一样呀?奇怪
every_one 2003-07-03
  • 打赏
  • 举报
回复
那我写的SQL语句有问题吗?怎么提示无效的月份呀?
bzszp 2003-07-03
  • 打赏
  • 举报
回复
截断到年
1月1日
08:44:29 SQL> SELECT TRUNC(sysdate,'YY') from dual;

TRUNC(SYSDATE,'YY')
-------------------
2003-01-01 00:00:00

实际:20
08:44:37 SQL>

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧