请解释如何编写创建查询,我可以在oracle中以特定格式(假设为dd / MM / yy)编写特定日期。假设我需要在我的表ORDERS中使用我的列 - order_id,order_date,数量
答案 0 :(得分:2)
"数据库在内部将日期存储为数字。日期存储在 每个7字节的固定长度字段,对应于世纪,年, 月,日,小时,分钟和秒。"
看起来像这样:
SQL> select dump(sysdate) from dual
2 /
DUMP(SYSDATE)
--------------------------------------------------------------------------------
Typ=13 Len=8: 222,7,9,7,2,48,32,0
SQL>
实际上看起来像八个字节但有趣的是日期长度为九个字节:
SQL> select lengthb(sysdate) from dual
2 /
LENGTHB(SYSDATE)
----------------
9
SQL>
无论如何,存储是固定的,完全独立于日期的显示。
默认日期格式由NLS_DATETIME_FORMAT管理,默认为NLS_TERRITORY设置。这就是Oracle确定货币,数字,格式,星期几等的方式。阅读Globalization Support guide了解更多信息。
如果要为日期设置不同的默认格式掩码,可以在数据库级别设置。这是一个重大决定。幸运的是,它也可以设置在更精细的级别:
SQL> select sysdate from dual
2 /
SYSDATE
---------
07-SEP-14
SQL> alter session set nls_date_format='Month DD YYYY HH12:MI AM'
2 /
Session altered.
SQL> select sysdate from dual
2 /
SYSDATE
--------------------------
September 07 2014 03:05 AM
SQL>
就日期输入而言,Oracle期望包含日期的字符串具有与NLS_DATE_FORMAT指定的格式相同的格式。如果不是这种情况,那么我们必须使用TO_DATE()函数应用转换并提供字符串的掩码:
SQL> select to_date('31/05/14','DD/MM/YY') from dual
2 /
TO_DATE('31/05/14','DD/MM/
--------------------------
May 31 2014 12:00 AM
SQL>