如何在“DD MON YYYY'”中显示日期?格式?

时间:2014-06-27 06:04:41

标签: sql oracle

我是Oracle数据库编程的新手,我希望在DD MONYYYY'中插入日期(也显示)。格式。 (PS:这只涉及INSERT事件)。为了完成这种格式,哪种数据类型(DATE或TIMESTAMP)对我来说是最合适的选择?我怎么会这样做?感谢。

3 个答案:

答案 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;

在一般情况下,请记住:

  • TO_DATE 是用于将字符串(CHAR)转换为DATE的函数
  • TO_CHAR 是用于将DATE转换为字符串(CHAR)的函数

答案 2 :(得分:-2)

在这种情况下,date数据类型将适合您,对于所需的格式,您应该尝试这样: -

 INSERT INTO TABLE_NAME(DATE_COLUMN) VALUES('27-JUN-2014');

希望这可以帮到你。