首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBMS日期命令

DBMS日期命令
EN

Stack Overflow用户
提问于 2021-07-03 08:05:43
回答 2查看 38关注 0票数 0

每当我试图插入这个查询时,我都会得到一个错误。

代码语言:javascript
复制
CREATE TABLE dateOfBirth(dateOfBirth date);
INSERT INTO dateOfBirth(dateOfBirth)VALUES('1967-11-17');

我得到了一个错误:

ORA-01843:无效月份

EN

回答 2

Stack Overflow用户

发布于 2021-07-03 10:34:04

让我试试你的代码:

代码语言:javascript
复制
SQL> CREATE TABLE dateOfBirth(dateOfBirth date);

Table created.

SQL> INSERT INTO dateOfBirth(dateOfBirth)VALUES('1967-11-17');
INSERT INTO dateOfBirth(dateOfBirth)VALUES('1967-11-17')
                                           *
ERROR at line 1:
ORA-01861: literal does not match format string


SQL>

也不起作用,但是-失败了,有一个不同的错误。

基本上,这就是当您试图将字符串输入date数据类型列时发生的事情(我的意思是--您会得到错误)。虽然乍一看很清楚--如果你把'1967-11-17'插入到dateOfBirth中--有人出生于1967年11月17日。不幸的是,甲骨文对此并不那么热心。它将尝试隐式转换字符串到目前为止,但正如您可以看到的,在您和我的情况下,它不幸失败。

此外,如果你试图输入例如12-07-05。这串是什么?12年(可能是)、月份(可能)还是一天(也可能是)?0705也是如此。简单地说,不要这样做,不要依赖于从任何事物到其他事物的隐式转换。

那么,能做些什么呢?显然,插入一个有效的DATE数据类型值!多么?例如:

  • 使用日期文本,它总是类似于date 'yyyy-mm-dd'

SQL>插入出生日期(出生日期)值(日期'1967-11-17');创建一行。

  • 或使用具有适当格式掩码的to_date函数:

SQL>插入出生日期(出生日期)值(to_date(‘17.11.1967,’dd.mm.yyyy‘);创建一行.

  • 或,alter和set格式,以便Oracle识别它(如您所见,您的“初始”插入现在将成功):

SQL> altered设置nls_date_format =‘yyyy dd’;会话更改。SQL>插入dateOfBirth(DateOfBirth)值(‘1967-11-17’);创建一行.

有很多种选择。因此,如果你控制了它,就不会有问题了。

票数 1
EN

Stack Overflow用户

发布于 2021-07-03 10:26:01

insert语句试图将字符串挤压到date列中。为了允许这种情况发生,Oracle必须使用隐式转换,这将使用会话NLS参数。在您的示例中,隐式转换不适用于您给它的字符串。

隐式转换是结束损坏数据或错误的简单方法(正如您现在看到的),您应该始终使用显式转换,以便无论会话的设置是什么,都可以确保字符串以正确的日期格式进行转换:

代码语言:javascript
复制
CREATE TABLE dateOfBirth(dateOfBirth date);
INSERT INTO dateOfBirth(dateOfBirth)VALUES(to_date('1967-11-17','yyyy-mm-dd'));

将数据作为日期存储在表中后,可以使用您喜欢的任何日期格式显示数据:

代码语言:javascript
复制
select to_char(dateOfBirth,'dd/mm/yyyy') dateOfBirth from dateOfBirth;

或者,您可以由客户端的会话设置来决定如何显示它(使它成为客户端的责任,以使其正确)。

代码语言:javascript
复制
select dateOfBirth from dateOfBirth;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68234362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档