如何在oracle systimestamp中替换日期

时间:2017-07-08 05:22:09

标签: oracle timestamp systimestamp

我只能在查询中使用特定的基础值(YYYYMMDD)。

我想插入带有时间戳的数据,但只是替换为该日期

INSERT INTO table (field1, field2, regTs)
 VALUES (:field1, :field2, systimestamp);

从这个查询中,我该如何申请:basedate + systimestamp&n;小时,分钟,秒,微秒

2 个答案:

答案 0 :(得分:0)

首先使用To_Char将日期转换为字符串并将时间字符串与日期字符串连接,现在您可以使用To_Date函数将日期时间字符串转换为时间戳。

例如:

import * as mySettings from '../settings';

baseValue: object=mySettings.settings.base;

希望这有帮助。

答案 1 :(得分:0)

如果您知道:对于给定的用户体验(执行任务),basedate是常量,那么您的第一步应该是计算sysdate和:basedate之间的间隔。执行一次以解决问题并在以后最小化CPU消耗:

select numtodsinterval(sysdate - :basedate, 'DAY') dsinterval
from dual;

然后,您可以使用以下内容替换插入语句文本中的systimestamp

systimestamp - :dsinterval

如果:非常频繁地进行更改,那么您必须将更多代码放入表达式中,如下所示:

systimestamp - numtodsinterval(sysdate - :basedate, 'DAY')

显然,在上面的例子中,:basedate的数据类型是date。如果它是字符串数据类型,那么如果根据NLS_DATE_FORMAT的当前设置格式化日期字符串,则必须像这样引用它:

to_date(:basedate)

或取决于日期字符串的格式:

to_date(:basedate, 'some date format string')