我不是很喜欢数据库,我必须在 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
答案 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()
和适当的格式掩码。