INSERT INTO Log_Table
VALUES ('Mismatch', 'C:\Folder-SBX2\', '\Subfolder1\', 'm1.txt',
'37587b066cf68b3870101c4bbc1a5dc0', 'SBX2', '7.2 SP13 CC5',
To_Date('2013/04/04 11:46:06 AM', 'YYYY-MM-DD HH:MI:SS AM'));
特别是最后一行。我希望日期显示为 2013/04/04 11:46:06 AM ,而是输入为 04-APR-13 。问题是什么?
答案 0 :(得分:6)
Oracle以自己的格式存储日期。存储与显示无关。
04-APR-2013
只是Oracle在不更改时使用的默认格式。如果要更改日期显示方式,则需要更改客户端中的NLS_DATE_FORMAT。例如,您可以运行此命令:
sql> alter session set nls_date_format='YYYY-MM-DD HH:MI:SS AM';
嗯,不。愚蠢的是以各种不同的格式存储日期。从日期存储为字符串的人那里查看关于SO的任何无数问题。“这是非常愚蠢的。不是你的答案,但甲骨文我的意思是”
“我将此alter session语句与Select语句结合使用以正确显示日期”
你没有。你有两个选择。第一个 - 在我看来更好 - 选项是以Oracle规范格式返回日期,让客户端软件决定如何显示它。或者,您可以使用TO_CHAR并应用您想要的格式掩码;只有现在你把日期转换为字符串,这可能会产生不良后果。
如果你能说服你的DBA你的首选格式是One True Format,那么他们可以全局更改NLS_DATE_FORMAT,这样每个人都会看到你想要的日期(除非他们改变自己的本地设置)。
答案 1 :(得分:1)
因此,将选择语句的格式添加为:
select to_char(date_column, 'YYYY/MM/DD HH:MI:SS')
from my_table
答案 2 :(得分:0)
自从我使用Oracle以来已经有了很多,但是我看到你使用过滤器来指示Oracle如何将字符串作为日期读取。如果是这样,你有没有考虑匹配斜线(左)和负(右)?
答案 3 :(得分:0)
尝试:
INSERT INTO Log_Table
VALUES ('Mismatch', 'C:\Folder-SBX2\', '\Subfolder1\', 'm1.txt',
'37587b066cf68b3870101c4bbc1a5dc0', 'SBX2', '7.2 SP13 CC5',
To_Date('2013-04-04 11:46:06', 'YYYY-MM-DD HH:MI:SS'));
HH
和HH12
是等效的。