在oracle中定义数据库的日期格式

ahm*_*mad 0 sql oracle ora-01861

我正在尝试执行以下SQL:

INSERT INTO "x" 
   ("x_id", "requested_function", "user_action", "t_users_id", "date", "wf_process", "details") 
VALUES 
   ('66', 'index', 'view', '1', '2011-02-04 22:14:19', '15', '');
Run Code Online (Sandbox Code Playgroud)

..但我收到此错误:ORA-01861:文字与格式字符串不匹配.

如果我添加这样的日期格式,这个错误就解决了:

INSERT INTO "x" 
  ("x_id", "requested_function", "user_action", "t_users_id", "date", "wf_process", "details") 
VALUES 
  ('66', 'index', 'view', '1',to_date('2011-02-04 22:14:19','yyyy-mm-dd hh24:mi:ss'), '15', '');
Run Code Online (Sandbox Code Playgroud)

我不想为每个SQL语句定义日期格式,我希望这种格式是数据库中所有日期字段的标准格式,而不需要定义它,换句话说,第一个SQL语句必须正确运行而没有任何错误.

我可以为oracle数据库定义日期格式,因此不需要使用每个SQL语句再次定义它吗?

Ste*_*age 6

这是考虑编程的错误方式.隐含是坏的,显性是好的.如果您只是将字符串抛入数据列并希望默认值按预期工作,则很可能会产生错误和性能问题.

但是,从我这里得到解决问题的答案远非如此.

更改NLS_DATE_FORMAT初始化参数.

  • 但请注意,您在数据库级别设置的NLS_DATE_FORMAT将被客户端上的设置覆盖.因此,您最终可能会遇到令人讨厌的情况,即执行隐式转换的代码适用于某些人,而不适用于其他人. (3认同)