我只能在查询中使用特定的基础值(YYYYMMDD)。
我想插入带有时间戳的数据,但只是替换为该日期
INSERT INTO table (field1, field2, regTs)
VALUES (:field1, :field2, systimestamp);
从这个查询中,我该如何申请:basedate + systimestamp&n;小时,分钟,秒,微秒
答案 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')