1

我有一个TIMESTAMP包含数据的字段:13-09-16 23:56:00.000000000 AMERICA/NEW_YORK

我将这些数据从 Java 采购到 Calendar 对象中,年份表示为0013. SQL 开发人员还表示使用to_char(order_date,'YYYY-MM-DD')as运行时的日期0013

为什么?

4

5 回答 5

2

'RR' 或 'RRRR' - 年份格式

'RR' 让您仅使用两位数将 20 世纪的日期存储在 21 世纪。另请参阅:Oracle 数据库 SQL 参考中有关 RR 日期时间格式元素的其他讨论

'RRRR' 全年。接受 4 位或 2 位输入。如果是 2 位数,则提供与 RR 相同的回报。如果您不想要此功能,请输入 4 位数年份。

Oracle® 数据库 SQL 快速参考 10g 第 2 版 (10.2) B14195-01

于 2013-10-24T04:03:23.953 回答
1

您的字段格式不正确,应该是2013-09-16 23:56:00.000000000. 如果您将其存储在 SQL Timestamp 列中,数据库应自动更正此(或将其更改为0013-09-16 23:56:00.000000000)。

SQL 开发人员和 Java 中您获得 0013 的原因是因为您请求格式为四位数年份YYYY,而值是两位数年份。您需要指定YY才能获得两位数。

但是,问题的核心是您的时间戳未正确存储。

于 2013-10-23T20:08:10.373 回答
1

我知道这已经过时了,但我想我会添加我的解决方案,因为 TO_CHAR 函数从未对我有用。

使用 TO_DATE(yourDateField,'DateFormat')

这应该把它放在正确的格式。

于 2016-02-18T16:26:53.080 回答
0

如果 SQL 返回to_char(order_date,'YYYY-MM-DD')0013-nn-nn,这意味着年份实际上是公元 13 年,因此它正确显示为0013

于 2013-10-24T05:39:36.073 回答
0

我认为你必须改变模式:

to_char(order_date,'YY-MM-DD')

YYYY 是四个编号的年份

YY 应该可以使用两位数的年份(可能会显示为 1913 而不是 2013)

于 2013-10-23T20:07:29.633 回答