如何在Oracle DB上将此特​​定格式的当前日期正确设置为此插入查询?

时间:2015-05-21 09:21:17

标签: sql database oracle rdbms

我不是很喜欢数据库,我必须在 Oracle db上实现插入此插入查询:

insert into CODA_RX (PK_CODA, FK_TIPO_DOC, FK_PIVA_DESTINATARIO, DATA_IN, FK_STATO, DATA_OUT, CANALE, SIZE_XML, FK_PIVA_MITTENTE) 
       values(70030, 5, 06655971007, '06-MAG-15', 2, '06-MAG-15', 'WEB', 553, 01392380547); 

如您所见,有2个 DATE 字段名为 DATA_IN DATA_OUT 。在我的查询的先前版本中,日期值是明确写的(它是固定的:'06 -MAG-15')。

如何以特定格式使用当前日期 '06 -MAG-15'(DD-MM-YY)?

TNX

2 个答案:

答案 0 :(得分:4)

'06-MAG-15'不是 DATE ,而是 STRING

  • 使用 TO_DATE 和正确的格式模型将字符串转换为日期。

  • 此外,最好避免 NLS依赖

  • 另一件事,避免的2位数值。不要重新发明 Y2K错误。或者,使用RR格式。但是,你必须知道一些规则。我更喜欢YYYY

例如,

SQL> SELECT TO_DATE('06-MAY-2015', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=ENGLISH') FROM DUAL;

TO_DATE('
---------
06-MAY-15

SQL>
  

如何在Oracle DB上将此特​​定格式的当前日期正确设置为此插入查询?

这与您在问题中解释的完全不同。

请注意, DATE 没有任何格式。您看到的是显示,以便我们可以轻松解读。 Oracle在7 bytes内部以专有格式存储DATE。

如果要插入当前日期,则不需要任何文字和格式。使用 SYSDATE

例如,

SQL> alter session set nls_date_format='MM/DD/YYYY HH24:MI:SS';

Session altered.

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
-------------------
05/21/2015 15:15:05

SQL>

答案 1 :(得分:1)

您需要使用TO_DATE()才能将字符串转换为DATE数据类型。例如:

TO_DATE('06-MAY-2015', 'dd-MON-yyyy', 'nls_date_language=english')

有关TO_DATE()的更多信息,请参阅the documenation,可以找到格式掩码列表here

相反,如果要显示特定格式的DATE数据类型,可以使用TO_CHAR()和适当的格式掩码。