如何将这种特定格式的当前日期正确设置到 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_INDATA_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以自定义格式写入单元格

如何以特定格式获取 Javascript 当前日期秒数

从firestore查询数据时,如何将保存的字符串格式的日期与当前日期进行比较?

如何将日期字符串设置为以下格式