首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01843:不是有效月份

ORA-01843:不是有效月份
EN

Stack Overflow用户
提问于 2012-10-28 18:02:40
回答 1查看 33.8K关注 0票数 2

我的sql查询有问题。

代码语言:javascript
复制
  create table rental
  (     
  rental_id NUMBER(5) NOT NULL,
  rental_date timestamp NOT NULL, 
  inventory_id NUMBER(5) NOT NULL,
  customer_id NUMBER(5) NOT NULL,
  return_date timestamp NOT NULL,
  staff_id NUMBER(5) NOT NULL,
  constraint rental_primary PRIMARY KEY (rental_id),
  constraint rental_foreign FOREIGN KEY (inventory_id) REFERENCES 

  inventory(inventory_id),
  constraint rental_foreign2 FOREIGN KEY (customer_id) REFERENCES
  customer(customer_id),
  constraint rental_foreign3 FOREIGN KEY (staff_id) REFERENCES staff(staff_id),
  constraint rental_unique_rental_date unique (rental_date),
  constraint rental_unique_inventory_id unique (inventory_id),
  constraint rental_unique_customer_id unique (customer_id),
  constraint rental_rental_date check(to_char(rental_date,'YYYY/MM/DD HH:MI:SS AM') 
  between '2005/01/01 00:00:01 AM' AND '12/31/2015 11:59:59 PM'),
  constraint rental_return_date check(to_char(return_date,'YYYY/MM/DD HH:MI:SS AM') 
  between '2005/01/01 00:00:01 AM' AND '12/31/2015 11:59:59 PM')
  );

当我试图插入数据时,抛出了这个错误"ORA-01843:不是一个有效的月份“。有没有人可以建议我使用哪种类型的数据类型来rental_date和return date来解决这种情况?这是我正在尝试上传的样本数据

代码语言:javascript
复制
    rental_date                   return_date
   5/24/2011  10:53:30 PM        5/26/2011  10:04:30 PM

注意:我可以在我的excel表格中看到这种类型的格式,其中有我的数据,但当我得到错误时

代码语言:javascript
复制
       "ORA-01843: not a valid month    
     Row 145: 144,  2011-05-25 23:49:56  ,1689,357,  2011-06-01 21:41:56  ,2"

我在这里观察到不同的时间格式。

有人能给我一个解决方案吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-10-28 19:36:06

在check约束中,指定日期格式掩码为'YYYY/MM/DD HH:MI:SS AM'的TO_CHAR()。但是您为范围指定的值有两种不同的格式,例如

代码语言:javascript
复制
'2005/01/01 00:00:01 AM' AND '12/31/2015 11:59:59 PM'

我认为使用dates会是一个好主意,因为字符串不会像你认为的那样进行比较。

代码语言:javascript
复制
constraint rental_rental_date check(rental_date) 
    between to_date('2005/01/01 00:00:01 AM', 'YYYY/MM/DD HH:MI:SS AM') and
            to_date('2015/12/31 11:59:59 PM', 'YYYY/MM/DD HH:MI:SS AM')

然而,这可能不是问题的根源。这可能是你加载过程中的一个转换,这就是为什么我们需要知道你是如何加载数据的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13107900

复制
相关文章

相似问题

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