我是Oracle数据库编程的新手,我希望在DD MONYYYY'中插入日期(也显示)。格式。 (PS:这只涉及INSERT事件)。为了完成这种格式,哪种数据类型(DATE或TIMESTAMP)对我来说是最合适的选择?我怎么会这样做?感谢。
答案 0 :(得分:2)
DATE
列没有任何格式。
因此,插入或更新数据时使用的格式与显示数据无关(这是您永远不应在VARCHAR
列中存储日期的原因之一)。
您在SQL工具中为DATE
列看到的任何格式化输出(例如SQL * Plus)都由该工具应用。它不是该列中存储的数据的一部分。
提供日期文字时,您应该使用带有显式格式掩码的to_date()
函数:
insert into some_table (some_date_column)
values (to_date('27-06-2014', 'dd-mm-yyyy'));
我也不建议在提供日期文字时使用带有书面月份名称的格式(27-JUN-2014),因为他们也依赖于客户端计算机的NLS设置并且可能产生(随机) )由于语言不同而导致的错误。仅使用数字更加健壮。
我更喜欢使用ANSI日期文字,因为它的输入次数较少:
insert into some_table (some_date_column)
values (DATE '2014-06-27');
ANSI日期(或时间戳)文字的格式始终 ISO格式(yyyy-mm-dd)。
当您选择数据时,您可以以您喜欢的任何格式显示日期。通过使用to_char()
函数(例如,使用SQL工具时)或使用编程语言中的函数(在应用程序内部使用的首选方法):
select to_char(some_date_column,'dd-mon-yyyy')
from some_table;
请注意,Oracle中的DATE
数据类型(尽管名称)也会存储时间。 TIMESTAMP
仅以更高的精度执行相同的操作(包括毫秒,而DATE
数据类型仅存储秒数。)
答案 1 :(得分:0)
插入记录
INSERT INTO TABLE_NAME (DATE_FIELD) VALUES (TO_DATE ('27-JUN-2014', 'DD-MON-YYYY');
建议使用DATE数据类型,除非您需要日期的精确度直到毫秒。在您的情况下,使用DATE数据类型并且不需要TIMESTAMP
要选择记录,
SELECT TO_CHAR(DATE_FIELD, 'DD-MON-YYYY') FROM TABLE_NAME;
在一般情况下,请记住:
答案 2 :(得分:-2)
在这种情况下,date数据类型将适合您,对于所需的格式,您应该尝试这样: -
INSERT INTO TABLE_NAME(DATE_COLUMN) VALUES('27-JUN-2014');
希望这可以帮到你。