怎么在oracle中的日期类型字段显示值格式为2010年12月14日

tuzimousecat 2010-12-14 05:42:47
怎么在oracle中的日期类型字段显示值格式为 2010年12月14日
...全文
434 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljtshihouzi 2010-12-16
  • 打赏
  • 举报
回复
找到下面资料,希望对你有用:


win下默认的格式为DD-MM-yy ,如下:
SQL>select sysdate from dual;

SYSDATE
----------
21-12月-04

数据库中的日期字段中的格式为yyyy-mm-dd hh24miss,导出的数据中也要这样的格式,设置nls_date_format就可以实现,如下:
1.用alter session来修改
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL> select sysdate from dual;

SYSDATE
-------------------
2004-12-21 14:44:24

2.在OS中设置nls_date_format
打开一个控制台窗口
C:>SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS //注意:这里YYYY-MM-DD HH24:MI:SS不能加引号,但在unix系统中要加

SQL> select sysdate from dual;

SYSDATE
-------------------
2004-12-21 14:45:44

这样改了以后只对当前的控制台窗品有效,如果不想每次都设置,就修改系统/用户环境变量,新增一个nls_date_format变量,值为YYYY-MM-DD HH24:MI:SS
打开一个控制台窗口
SQL> select sysdate from dual;

SYSDATE
-------------------
2004-12-21 14:46:15

tuzimousecat 2010-12-15
  • 打赏
  • 举报
回复
谢谢大家了,我在用transformer进行建模操作,有些东西需要根据日期格式来进行显示相应的中文或者英文,看来只能在transformer上找找看,看怎么样进行日期格式的设定了。
minitoy 2010-12-15
  • 打赏
  • 举报
回复
这应该算是理解错误了.对于date类型oracle内部存储是一个二进制整数,上面说的都是提取格式.

Internally, DATEs are stored in a binary format. When converting a DATE column value to a character string in your program, Oracle uses the default format mask for your session. If you need other date/time information such as the date in Julian days, use the TO_CHAR function with a format mask. Always convert DATE column values to and from character strings using (external) character datatypes such as VARCHAR2 or STRING.

[Quote=引用 12 楼 tuzimousecat 的回复:]
我想的是数据库里本身保存的就是 2010年12月14日 这样的格式,并且为日期类型。
[/Quote]
Oraclefans_ 2010-12-15
  • 打赏
  • 举报
回复
那你就alter system
tuzimousecat 2010-12-15
  • 打赏
  • 举报
回复
我想的是数据库里本身保存的就是 2010年12月14日 这样的格式,并且为日期类型。
picasso124256 2010-12-14
  • 打赏
  • 举报
回复
需要在整个会话过程用到就用
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';
如果只需在某个地方输出也可用
to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'||
to_char(sysdate,'dd')||'日'
picasso124256 2010-12-14
  • 打赏
  • 举报
回复
需要在整个会话过程用到就用
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';
如果只需在某个地方输出也可用
to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'||
to_char(sysdate,'dd')||'日'
picasso124256 2010-12-14
  • 打赏
  • 举报
回复
需要在整个会话过程用到就用
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';
如果只需在某个地方输出也可用
to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'||
to_char(sysdate,'dd')||'日'
tangren 2010-12-14
  • 打赏
  • 举报
回复
对应的还有nls_time_format参数用来设定日期格式。
在程序中则可使用函数来转换
select to_char(sysdate,'yyyy')||'年'||to_char(sysdate,'mm')||'月'||
to_char(sysdate,'dd')||'日' from dual;
select extract(year from sysdate)||'年'||extract(month from sysdate)||'月'||
extract(day from sysdate)||'日' from dual;
iihero 2010-12-14
  • 打赏
  • 举报
回复
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';
这个是比较通行的做法。
  • 打赏
  • 举报
回复
gelyon 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oraclefans_ 的回复:]
SQL code


SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';

会话已更改。

SQL> select sysdate from dual;

SYSDATE
--------------
2010年12月14日

SQL>
[/Quote]
嗯???我咋没看到 你已经回复了的啊? 嘿,怪事
gelyon 2010-12-14
  • 打赏
  • 举报
回复
修改你日期显示格式就可以了,比如会话级的:ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';

Oraclefans_ 2010-12-14
  • 打赏
  • 举报
回复


SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY"年"MM"月"DD"日"';

会话已更改。

SQL> select sysdate from dual;

SYSDATE
--------------
2010年12月14日

SQL>
zhangbo101124 2010-12-14
  • 打赏
  • 举报
回复
楼上太精辟了吧
njlywy 2010-12-14
  • 打赏
  • 举报
回复
转换函数…

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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