TIMESTAMP(6)Oracle Insert

时间:2012-03-18 02:38:34

标签: oracle oracle11g relational-database database-schema

我正在为数据库生成虚拟数据,一个属性正在使用TIMESTAMP(6)

任何人都可以举例说明该值的外观吗?

此外,我希望能够在

中插入日期

03/18/2012 02:35 AM

所以它看起来像

INSERT INTO FLIGHT VALUES (1,'London Heathrow','Miami Airport','03/18/2012 02:35 AM','04/18/2012 13:35 PM');

这可能吗?非常感谢...

EDIT ----

如何摆脱时间戳列大空间

space

2 个答案:

答案 0 :(得分:8)

每当您处理DATETIMESTAMP数据类型时,都应始终插入DATETIMESTAMP值。您不应该插入字符串并依赖隐式转换将字符串转换为DATETIMESTAMP。您应该明确调用TO_DATETO_TIMESTAMP。您的INSERT语句还应明确列出您要插入的列的名称。

您希望INSERT语句看起来像这样

INSERT INTO FLIGHT( <<list of columns>> )
  VALUES (1,
         'London Heathrow',
         'Miami Airport',
         to_timestamp( '03/18/2012 02:35 AM', 'MM/DD/YYYY HH:MI AM'),
         to_timestamp( '04/18/2012 13:35 PM', 'MM/DD/YYYY HH:MI AM') );

您可以通过更改格式掩码来调整SQL * Plus在特定列中显示数据的方式。例如,

SQL> column dept_time format a30;
SQL> column arrv_time format a30;

将导致SQL * Plus以30个水平字符显示DEPT_TIMEARRV_TIME(如果您更改NLS_TIMESTAMP_FORMAT,则当前NLS_TIMESTAMP_FORMAT似乎会生成28个字符字符串,您可能想要更改要求SQL * Plus显示的列的宽度。

答案 1 :(得分:1)

请查看以下示例:

ALTER SESSION SET nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS';

SELECT *
FROM orders 
WHERE ordered_at 
   BETWEEN '2013-10-06 12:00:00' 
       AND '2013-10-06 16:00:00'