2014-02-05 87 views
-3

团队, 我在SQL DATE中遇到了问题。SQL中的日期更新

我有一个提交的X_RECEIVED_DATE = 1/1/753。

我试着更新如下那场

update table_contract set x_received_date= 
to_date(TO_CHAR(X_RECEIVED_DATE-24/24,'mm/dd/yy hh:mi:ss PM')) where objid=268865360 

IM试图更新此一领域,但它是扔错 “ORA-01843:不是有效的月”

请帮助我在这个并提供我一些简单的提议,请

+0

什么是'X_RECEIVED_DATE-24/24'应该给你? –

+0

X_RECEIVED_DATE - TO_CHAR(X_RECEIVED_DATE-24/24,'MM/DD/YYHH:MI:SSPM') 1/1/1753 12/31/52 12:00:00 AM – user1835935

+0

这是输出如果我查询 从table_contract中选择X_RECEIVED_DATE,TO_CHAR(X_RECEIVED_DATE - 24/24,'MM/dd/yh h:mi:ss PM'),其中objid = 268865360 – user1835935

回答

1

因此,这里是你似乎怎么做:

  • 减去一天(使用24/24)之日起
  • 其与特定格式
  • 转换为字符串将其转换回日期,但不指定格式

我的猜测是数据库在尝试解析日期时无法推断格式。但是没有必要将它转换为字符串,并且我可以看到它的返回

你应该能够只是做:基于您的评论

UPDATE table_contract 
SET x_received_date = x_received_date-1 
WHERE objid=268865360 

,你想表明解析了两位数的年份日期不会给你原来的日期后面。如果是这样的话,那么在解析时只需指定的日期格式:

to_date(
     TO_CHAR(X_RECEIVED_DATE-24/24 
       ,'mm/dd/yy hh:mi:ss PM') 
     ,'mm/dd/yy hh:mi:ss PM') 
+0

thing is my previous date = 1/1/1753 when I convert it to string,it will be 12/31/52 12:00:00 AM当我将它转换回日期并且更新显示为'12/31/2052'时,我想证明'12/31/52'如何转换为'12/31/2052'我知道这是自动完成的,因为我们将它限制为YY,并且通过更新它将采用默认的世纪并且将变为2052年。但是我需要显示结果如何转化。 – user1835935

+0

谢谢大家。 它完成。 – user1835935

0

date场减去整数会给你一个date - 没有理由将其转换为一个char,然后回date再次:

UPDATE table_contract 
SET x_received_date = X_RECEIVED_DATE - 24/24 
WHERE objid = 268865360 
+0

事情是我以前的日期= 1/1/1753 当我将它转换为字符串,它将是12/31/52 12:00:00 AM 当我将其转换回日期和更新显示为' 12/31/2052' 因此,我想证明'12/31/52'如何转换为'12/31/2052' 我知道这是自动完成的,因为我们将它限制为YY并通过更新它将采用默认的世纪,并将转向2052年。但我需要展示结果如何转化。 – user1835935