oracle中以00结尾的日期比较
我的数据库中存储的日期字段 emp_doj(Data Type DATE)
为 01-01-1900
。
但在检索数据时,即使格式为 dd-mm-yyyy
,该值仍为 01-jan-00
。
我正在将检索到的日期字段与 SQL 查询中的其他日期进行比较。
select *
form persons
where per_join = to_date(to_char(i.emp_doj,'DD-MM-YYYY'),'DD-MM-YYYY')
这里 to_date(to_char(i.emp_doj,'DD-MM-YYYY'),'DD-MM-YYYY')
的值结果为 01-01-00
,而不是 01-01-1900
The date stored in my database is 01-01-1900
for field emp_doj(Data Type DATE)
.
But while retrieving the data, the value is 01-jan-00
, even though formatted with dd-mm-yyyy
.
I am comparing retrieved date field with some other date in SQL query.
select *
form persons
where per_join = to_date(to_char(i.emp_doj,'DD-MM-YYYY'),'DD-MM-YYYY')
Here the value of to_date(to_char(i.emp_doj,'DD-MM-YYYY'),'DD-MM-YYYY')
results in 01-01-00
, instead of 01-01-1900
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我怀疑您正在使用的 IDE 的默认 NLS 设置仅显示带有两位数年份的日期。 Oracle 不以任何特定格式存储日期。它在内部以二进制格式存储它们。
因此,我建议您检查 IDE 和/或数据库的设置,您将看到 NLS 日期格式设置为 DD-MM-YY,更改此设置并将其设置为 DD-MM- YYYY,您将看到您希望看到的日期。
至于您的查询,为什么使用
TO_CHAR
然后使用TO_DATE
?如果emp_doj
是日期字段并且per_join
也是日期,则直接比较它们是否相等。如果您试图从emp_doj
值中删除时间部分,那么只需使用TRUNC()
即可。有关 NLS 的示例和参考:http://www.orafaq.com/wiki/NLS
更多这里:http://www.oracle.com/technetwork/database/globalization/nls-lang-099431.html
I suspect it's your default NLS settings for the IDE you are using that is merely displaying the dates with a two digit year. Oracle does not store dates in any specific format. It stores them in a binary format internally.
Therefore I suggest you check the settings for your IDE and/or database and you will see the NLS date format set to
DD-MM-YY
, alter this and set it toDD-MM-YYYY
and you will see the dates as you wish to see them.As for your query, why use
TO_CHAR
and thenTO_DATE
? Ifemp_doj
is a date field andper_join
is also a date then just compare them directly for equality. If you are trying to cut the time portion off youremp_doj
values then just useTRUNC()
.For examples and reference on NLS: http://www.orafaq.com/wiki/NLS
More here: http://www.oracle.com/technetwork/database/globalization/nls-lang-099431.html
我有一些目前对我有用的临时解决方案,我只是将我的选择查询更改为
I have got some temporary solutions it currently works for me, I simply changed my select query to