与甲骨文的约会

发布于 2024-11-09 15:46:33 字数 880 浏览 0 评论 0原文

我正在使用 Oracle 10g Express。

我写这个 SQL 命令:

INSERT INTO compte_courant (num_compte_courant, num_client, libelle_compte_courant, solde_compte_courant, decouvert_compte_courant, taux_agios_compte, date_ouverture_compte_courant, date_fermeture_compte_courant, etat_compte_courant) VALUES
('0001A1234', S_CLIENT.CURRVAL, 'compte courant', 1000.00, -300, 5.2, TO_DATE('01/01/2011', 'DD/MM/YYYY'), NULL, 'open');

当我查看 compte_courant 表时。这是我在日期字段中看到的: 01/01/11

在一个存储过程中我写:

select TO_DATE(date_operation_transfert, 'DD/MM/YYYY'), TO_DATE(date_valeur_transfert, 'DD/MM/YYYY'), montant_transfert, compte_cible
  from transfert
  where compte_cible = numAccount
  order by date_operation_transfert desc;

在java方面,当我读取结果集时,我有: Janvier 01, 0011

那怎么可能?我想要的只是 Oracle 按照我的要求存储日期:DD/MM/YYYY

感谢您的帮助

Iam using Oracle 10g express.

I write this SQL order :

INSERT INTO compte_courant (num_compte_courant, num_client, libelle_compte_courant, solde_compte_courant, decouvert_compte_courant, taux_agios_compte, date_ouverture_compte_courant, date_fermeture_compte_courant, etat_compte_courant) VALUES
('0001A1234', S_CLIENT.CURRVAL, 'compte courant', 1000.00, -300, 5.2, TO_DATE('01/01/2011', 'DD/MM/YYYY'), NULL, 'open');

When I look in the compte_courant table. this is what I see in the date field :
01/01/11

in a stored procedure I write :

select TO_DATE(date_operation_transfert, 'DD/MM/YYYY'), TO_DATE(date_valeur_transfert, 'DD/MM/YYYY'), montant_transfert, compte_cible
  from transfert
  where compte_cible = numAccount
  order by date_operation_transfert desc;

On the java side, when I read my ResultSet, I have : Janvier 01, 0011

How could that be ? All I want is Oracle to store the date as I asked to : DD/MM/YYYY

Thanks for your help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安穩 2024-11-16 15:46:33

您不应在 SELECT 中应用 TO_DATE 函数,因为这些值已经是日期。要将它们转换为字符串,请使用 TO_CHAR。

当您选择 TO_DATE(datevalue) 时,Oracle 发现 TO_DATE 需要字符串参数,因此它执行隐式 TO_CHAR(datevalue) 来使其工作。隐式 TO_CHAR 使用默认格式掩码,该掩码通常会省略世纪。

You should not apply the TO_DATE function in your SELECT since the values are already dates. To convert them to strings use TO_CHAR.

When you select TO_DATE(datevalue), Oracle finds that TO_DATE requires a string argument, so it does an implicit TO_CHAR(datevalue) to make it work. The implicit TO_CHAR uses the default format mask, which often omits the century.

忆沫 2024-11-16 15:46:33

如果您确实希望 Oracle “按照您的要求”存储日期,那么您处理的是字符串,而不是日期。但是,如果它是日期,我建议您将其存储为日期。

Oracle 使用单一的内部数据格式存储日期 - 当您查询日期时,它会根据提供的日期格式对其进行格式化以进行显示。您的 Java 客户端只是使用了不同的日期格式。

If you really want Oracle to store the date "as you asked it to", what you are dealing with is a string, not a date. However, if it's a date, I recommend you store it as a date.

Oracle stores dates using a single, internal, data format - when you query a date it formats it for display according to the supplied date format. Your java client is simply using a different date format.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文