【发布时间】:2018-09-12 13:34:47
【问题描述】:
我有一个数据库(Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production)。有一个表(课程),其中有一个日期列(start_dte)。我想将输出格式化为一个字符,所以我使用了:
SELECT start_dte,
to_Char(start_dte) AS start_dte_2,
to_Char(start_dte,'DD.MM.YYYY') AS start_dte_3,
to_Char(start_dte,'DD.MM.YYYY HH24:MI:SS') AS start_dte_4,
to_Char(start_dte,'DD.MM.YYYY HH12:MI:SS') AS start_dte_5,
to_Char(start_dte,'DD.MM.YYYY HH.MI.SSXFF AM') AS start_dte_6,
to_Char(start_dte,'DD.MM.YYYY HH24:MI:SSxFF') AS start_dte_7,
to_Char(start_dte,'DD-MON-YYYY HH24:MI:SSxFF TZH:TZM') AS start_dte_8
FROM Course
结果:
6,7,8号给我
java.sql.SQLException: ORA-01821: 日期格式无法识别
6 与以下格式相同:
SELECT value
FROM V$NLS_PARAMETERS
WHERE parameter = 'NLS_TIME_FORMAT'
7 和 8 取自 Oracle 文档,但这仅适用于时间戳。那么我错过了什么?我知道实际的数据类型应该是日期时间,但我只有对该数据库的读取权限。我真正想要的:
甚至更好:
【问题讨论】:
-
请不要粘贴图片,使用格式化文本。
-
日期有时间,但没有小数秒或时区,所以错误是合适的。 (尽管有一些像 NLS 设置这样的模糊引用,但没有
time数据类型)。我不明白你到底在问什么;start_dte_4肯定已经给了你你想要的吗? -
@AlexPoole 不,因为它要休息 2 小时..
-
所以你真的在问如何将日期值从一个时区调整到另一个时区?你的问题根本没有这么说。两个时区是什么时候?
-
@Alex Poole 我真的相信我不需要转换任何我想要与数据库中相同的日期/时间只是另一种格式的东西?