【问题标题】:ORA-01843: not a valid month not getting resolvedORA-01843: 无效月份未得到解决
【发布时间】:2017-02-18 10:49:22
【问题描述】:

我有一个 Oracle 查询,其中出现错误

ORA-01843: 月份无效

我也尝试过使用to_date,但它仍然对我不起作用

下面是查询

INSERT INTO xxcus.xxacl_land_purc_invoice_view
        (mkey, ref_purchase_id, ref_sr_no, ref_purhcase_type, org_id,
         project_id, taluka_id, village_id, survey_area_7_12, doc_no,
         invoice_id, invoice_num, vendor_id, vendor_name, invoice_amt,
         batch_id, batch_name, exp_id, exp_type, remarks, created_by,
         creation_date, last_update_date, last_updated_by
        )
 VALUES (139, 18, 1, 'E', 6089,
         49292, 1, 14, '85/47', '693',
         NULL, NULL, 2653609, 'K.A.JOSEPH', 1000,
         572727, 'ICICI', 900077, 'Land Cost', 'TEST', 5681,
         '18-02-2017 16:02:10', '18-02-2017 16:02:10', '5681'
        )

【问题讨论】:

  • 不要删除to_date()。正确使用即可。
  • @ÁlvaroGonzález:我使用了它,但仍然无法正常工作。像这样to_date('18-02-2017 16:02:10', 'dd-MM-yyyy')
  • 它是如何工作的?您的数据与格式完全不符。
  • @ÁlvaroGonzález:我被困在sysdate 部分。 :(
  • 我的意思是18-02-2017 16:02:10 不匹配dd-MM-yyyy。 (您的问题与 sysdate 无关,您是否在回答以前的问题时提出新问题?):

标签: oracle date


【解决方案1】:

使用带有正确格式掩码的 to_date:

to_date('18-02-2017 16:02:10','dd-mm-yyyy hh24:mi:ss')

试试这个:

INSERT INTO xxcus.xxacl_land_purc_invoice_view
        (mkey, ref_purchase_id, ref_sr_no, ref_purhcase_type, org_id,
         project_id, taluka_id, village_id, survey_area_7_12, doc_no,
         invoice_id, invoice_num, vendor_id, vendor_name, invoice_amt,
         batch_id, batch_name, exp_id, exp_type, remarks, created_by,
         creation_date, last_update_date, last_updated_by
        )
 VALUES (139, 18, 1, 'E', 6089,
         49292, 1, 14, '85/47', '693',
         NULL, NULL, 2653609, 'K.A.JOSEPH', 1000,
         572727, 'ICICI', 900077, 'Land Cost', 'TEST', 5681,
         to_date('18-02-2017 16:02:10','dd-mm-yyyy hh24:mi:ss'),
         to_date('18-02-2017 16:02:10','dd-mm-yyyy hh24:mi:ss'),
         '5681'
        )

根据 OP 关于插入当前日期时间的提及,最好使用sysdate

INSERT INTO xxcus.xxacl_land_purc_invoice_view
        (mkey, ref_purchase_id, ref_sr_no, ref_purhcase_type, org_id,
         project_id, taluka_id, village_id, survey_area_7_12, doc_no,
         invoice_id, invoice_num, vendor_id, vendor_name, invoice_amt,
         batch_id, batch_name, exp_id, exp_type, remarks, created_by,
         creation_date, last_update_date, last_updated_by
        )
 VALUES (139, 18, 1, 'E', 6089,
         49292, 1, 14, '85/47', '693',
         NULL, NULL, 2653609, 'K.A.JOSEPH', 1000,
         572727, 'ICICI', 900077, 'Land Cost', 'TEST', 5681,
         sysdate,
         sysdate,
         '5681'
        )

【讨论】:

  • 但我在服务器端这样发送。那么我应该如何添加to_date ...这里是DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
  • @nad - 如果您想从“现在”插入日期时间,请使用sysdate。我已经编辑了我的答案。请检查第二条 SQL。
  • 但是sysdate 需要分配一些东西.. 我应该像这样添加"SYSDATE" 吗?
  • @nad - 不,这是 Oracle 的内置功能。你不需要为它分配任何东西。只需简单地使用它。它会自动获取当前日期时间。
  • 谢谢,原来是sysdate。我只需要正确检查双引号。
猜你喜欢
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多