Oracle的日期类型怎么写?

javaname70 2005-12-21 07:44:37
INSERT INTO "SYS"."abc" ("ID" ,"myDATE") VALUES (2 ,TO_DATE('10-10-2005 10:10:10', 'dd-Mon-yyyy HH:MI:SS AM') )

请问那里错误?为什么提示月份不对?

myDATE是日期类型(DATE)。
...全文
440 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaname70 2005-12-22
  • 打赏
  • 举报
回复
up
altery 2005-12-22
  • 打赏
  • 举报
回复
INSERT INTO "SYS"."abc" (ID,myDATE) VALUES (2,TO_DATE('10-10-2005 10:10:10', dd-mm-yyyy HH:MI:SS AM') )
xluzhong 2005-12-22
  • 打赏
  • 举报
回复
INSERT INTO "SYS"."abc" ("ID" ,"myDATE") VALUES (2 ,TO_DATE('10-十月-2005 10:10:10', 'dd-Mon-yyyy HH:MI:SS AM') )
沝林 2005-12-22
  • 打赏
  • 举报
回复
是因为to_date()里日期和格式不对应,还要注意当前的语言环境:

SQL> select to_date('2005-10-10','yyyy-mon-dd') from dual;

select to_date('2005-10-10','yyyy-mon-dd') from dual

ORA-01843: 无效的月份

SQL> select to_date('2005-12-12','yyyy-mm-dd') from dual;

TO_DATE('2005-12-12','YYYY-MM-
------------------------------
2005-12-12


SQL> select to_date('2005-12月-10','yyyy-mon-dd') from dual;

TO_DATE('2005-12月-10','YYYY-M
------------------------------
2005-12-10

SQL> alter session set nls_LANGUAGE = American;

Session altered

SQL> select to_date('2005-Oct-10','yyyy-mon-dd') from dual;

TO_DATE('2005-OCT-10','YYYY-MO
------------------------------
2005-10-10
沝林 2005-12-22
  • 打赏
  • 举报
回复
说半天还是白说,月份是可以用mon 的,使用的时候首先要确认你的NLS_LANGUAGE参数值,可以用下面语句查询:
SQL> select * from V$NLS_PARAMETERS where PARAMETER = 'NLS_LANGUAGE';

PARAMETER VALUE
-------------- -------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE

可以看到现在NLS_LANGUAGE值为SIMPLIFIED CHINESE,所以用mon做日期转换必须这样写to_date('2005-12月-12','yyyy-mon-dd')

然后在会话级别更改NLS_LANGUAGE
SQL> alter session set nls_language = American;

Session altered

SQL> select * from V$NLS_PARAMETERS where PARAMETER = 'NLS_LANGUAGE';

PARAMETER VALUE
---------------------------------------------------------------- -------------NLS_LANGUAGE AMERICAN

现在NLS_LANGUAGE值为AMERICAN,所以用mon做日期转换必须这样写to_date('2005-Oct-12','yyyy-mon-dd'),当然不知道月份简写,用全拼也可以 to_date('2005-October-12','yyyy-mon-dd')
hlp912 2005-12-22
  • 打赏
  • 举报
回复
月份应该是MM啊,而不是mon
boydgmx 2005-12-21
  • 打赏
  • 举报
回复
INSERT INTO "SYS"."abc" ("ID" ,"myDATE") VALUES (2 ,TO_DATE('10-10-2005 10:10:10', 'dd-MM-yyyy HH24:MI:SS') )
Nicholas_Chi 2005-12-21
  • 打赏
  • 举报
回复
你的月份怎么是MON?
Marketdong 2005-12-21
  • 打赏
  • 举报
回复
INSERT INTO "SYS"."abc" ("ID" ,"myDATE") VALUES (2 ,TO_DATE('10-10-2005 10:10:10', 'dd-mm-yyyy HH:MM:SS AM') )
javaname70 2005-12-21
  • 打赏
  • 举报
回复
中国首家移动开发培训

17,377

社区成员

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

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