如何将这种特定格式的当前日期正确设置到 Oracle DB 上的这个插入查询中? [关闭]
Posted
技术标签:
【中文标题】如何将这种特定格式的当前日期正确设置到 Oracle DB 上的这个插入查询中? [关闭]【英文标题】:How can I correctly set the current date in this specific format into this insert query on an Oracle DB? [closed] 【发布时间】:2015-05-21 09:21:17 【问题描述】:我不太喜欢数据库,我必须在 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
【问题讨论】:
DATA_IN 和 DATA_OUT 是什么数据类型? @Boneist 哦,是的,我没有注意到这一点。我会收回我的评论。 【参考方案1】:'06-MAG-15'
不是 DATE,而是 STRING。
使用具有适当格式模型的 TO_DATE 将字符串转换为日期。
另外,最好避免NLS依赖。
另外,YEAR 避免使用 2 位数值。不要重新发明千年虫问题。或者,使用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 没有任何格式。您看到的是 display,以便我们轻松解读。 Oracle 在内部以专有格式将 DATE 存储在 7 bytes
。
如果要插入当前日期,则不需要任何文字和格式。使用 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>
【讨论】:
【参考方案2】:您需要使用TO_DATE()
将字符串转换为 DATE 数据类型。例如:
TO_DATE('06-MAY-2015', 'dd-MON-yyyy', 'nls_date_language=english')
有关TO_DATE()
的更多信息,请参阅the documenation,可以在here 找到格式掩码列表
相反,如果您想以特定格式显示 DATE 数据类型,您可以使用 TO_CHAR()
和适当的格式掩码。
【讨论】:
以上是关于如何将这种特定格式的当前日期正确设置到 Oracle DB 上的这个插入查询中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何将包含日期的 varchar 字段类型转换为正确的日期格式
如何强制Python XlsxWriter以自定义格式写入单元格