[参数设置] 日期函数--头疼

us_yunleiwangdb 2013-12-12 09:53:48
大家看看我这个怎么修改后台的参数

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
ASSAMESE_AMERICA.AL32UTF8

SQL> select sysdate from dual;

SYSDATE
----------------
12-???????? -13

create table test_date(
CRETEAT_TIME TIMESTAMP(3)
);

SQL> insert into test_date values('26-9月 -13 10.23.00.000 上午');----这样的语句有100多个。
insert into test_date values('26-9月 -13 10.23.00.000 上午')
*
ERROR at line 1:
ORA-01843: not a valid month
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CT_LXL 2013-12-12
  • 打赏
  • 举报
回复
引用 楼主 us_yunleiwangdb 的回复:
大家看看我这个怎么修改后台的参数 SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- ASSAMESE_AMERICA.AL32UTF8 SQL> select sysdate from dual; SYSDATE ---------------- 12-???????? -13 create table test_date( CRETEAT_TIME TIMESTAMP(3) ); SQL> insert into test_date values('26-9月 -13 10.23.00.000 上午');----这样的语句有100多个。 insert into test_date values('26-9月 -13 10.23.00.000 上午') * ERROR at line 1: ORA-01843: not a valid month
这个和数据库默认的日期格式有关,你可以通过 select * from V$NLS_PARAMETERS;查看NLS_DATE_LANGUAGE的值。(而且这个是SESSION级别的) 比如我当前session的NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE',那么我直接可以用'12-4月-2013'的字符串格式插入到一个DATE类型的column中。 其实你也可以新开一个窗口建立一个新的SESSION,并且修改这个SESSION的NSL_DATE_LANGUAGE值为AMERICAN:ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';现在你可以在这个窗口中直接插入'12-JAN-2013'格式的字符串到DATE的COLUMN
Yole 2013-12-12
  • 打赏
  • 举报
回复
timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。它不是用来存时间的,时间应该用datetime类型~ 如果你这里的时间列是想获取当前系统时间的话,你可以在他的默认列里输入,getdate(),然后在插入的时候跳过这一列就行了~
  • 打赏
  • 举报
回复
'26-9月 -13 10.23.00.000 上午'是字符串不是timestamp类型。楼主应加上to_timestamp,例如

insert into test_date(creteat_time)
values(to_timestamp('2006-01-02 13:40:20.123','yyyy-mm-dd hh24:mi:ss.ff3'));

17,380

社区成员

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

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