【问题标题】:DOB(date) is getting wrongly save in Oracle DBDOB(date) 错误地保存在 Oracle DB 中
【发布时间】:2018-11-29 03:30:02
【问题描述】:

我正在开发一个需要保存出生日期的 Web API。当我保存日期 02-05-1929 时,我遇到了一个奇怪的行为。但它在 oracle db 中被保存为 02-05-2029。我意识到它发生在 1950 年之前的所有日期。谁能帮我理解它为什么会发生

【问题讨论】:

  • 看看stackoverflow.com/questions/12605864/…>应该有帮助!
  • 这个链接中的解释:如果指定的两位年份是00到49,那么如果当前年份的最后两位是00到49,那么返回的年份是一样的两位数作为当前年份。根据这个解释,1929 正确地保存为 2029。但我只需要保存 1929。怎么办?
  • @AshwiniKumar 我认为您需要检查所有代码以确保您始终使用 DateTime 类型,如果不是,则确保表示始终具有完整的 4 位数年份。
  • 您保存的是“02-05-1929”还是“02-05-29”?另外,您发送给 Oracle 的数据类型是什么,是字符串还是日期时间?
  • @Karlsen:我正在保存“02-05-1929”,变量的数据类型是 DateTime

标签: c# oracle asp.net-web-api oracle11g


【解决方案1】:

由于它是一个网络 API,我假设您将日期作为字符串获取。您大概将其存储在数据类型为DATE 的列中。您需要控制从字符串到DATE 的转换,最好自己提供日期格式:

INSERT INTO TABLE my_table(..., my_date, ...)
VALUES(..., TO_DATE(my_datestring,'DD-MM-YYYY'), ...)

【讨论】:

  • 你能解释一下,错误信息是什么,你的表的创建语句是什么等等。
猜你喜欢
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
相关资源
最近更新 更多