Oracle 的“日期”[yyyy-mm-dd]”是否有效?文字总是使用 yyyy-mm-dd 模式?
改写一下,假设我使用这样的日期:
date'2010-04-10'
,结果可能不是 2010 年 4 月 10 日(例如 2010 年 10 月 4 日)吗?
更新我听到你和文档的说法。但是...
当使用硬编码日期'yyyy-mm-dd':s 运行批处理作业时,某些(非确定性)计算会失败。在 PL/SQL Developer 中运行失败的 SQL 语句永远会产生相同的、不正确的值。
首先,我运行了相同的计算(数十万),并将 date'' 日期文字替换为 to_date('', '') 函数,一切正常。
然后,我使用 NHibernate 及其 LINQ 提供程序,并完全替换了手工编写的 SQL。 ...一切都工作得很好...NHibernate 生成一个 '' 日期文字,其中包括时间部分,顺便说一句。
更新我的一位同事编写了一些代码,可以在我们的环境中重现错误。他在 Oracle 论坛上发布了他的发现(包括代码):https: //forums.oracle.com/forums/thread.jspa?threadID=2304569&tstart=0
更新更改了标题泽克姆斯的回答。
Rephrased, given I use date like so:
date'2010-04-10'
, could the outcome be anything but April 10th 2010 (e.g. October 4th 2010)?
UPDATE I hear what you, and the docs, say. But...
When a batch job runs, with hard-coded date'yyyy-mm-dd':s, it fails for some (non-deterministic) calculations. Running the failing SQL statements in PL/SQL Developer never yields the same, incorrect, value.
First, I ran the same calculations (hundreds of thousands) with the date'' date literals replaced with the to_date('', '') function, and everything worked just fine.
Then, I used NHibernate and its LINQ provider, and replaced the hand-crafted SQL altogether. ... and everything worked just fine... NHibernate produces a '' date literal, with the time part included, BTW.
UPDATE A colleague of mine wrote some code, that can reproduce the error in our environment. He posted his findings (including the code) at Oracle Forums: https://forums.oracle.com/forums/thread.jspa?threadID=2304569&tstart=0
UPDATE Changed the title according to zerkms' answer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它不是函数,而是日期文字。而且,是的,无论任何 Oracle 设置,它始终匹配
YYYY-MM-DD
。It is not function, but date literal. And, Yes, it always matches
YYYY-MM-DD
regardless any oracle settings.这是 链接到 Oracle 10g SQL 参考,位于日期时间文字。摘抄:
Here is a link to Oracle 10g SQL reference, on datetime literals. Excerpt: