首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换oracle systimestamp中的日期

如何替换oracle systimestamp中的日期
EN

Stack Overflow用户
提问于 2017-07-08 13:22:09
回答 2查看 1.6K关注 0票数 0

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

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

代码语言:javascript
复制
INSERT INTO table (field1, field2, regTs)
 VALUES (:field1, :field2, systimestamp);

在这个查询中,我如何应用:basedate +systimestamp的小时、分钟、秒、微秒

EN

回答 2

Stack Overflow用户

发布于 2017-07-08 18:21:54

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

例如:

代码语言:javascript
复制
to_date(to_char(BASEDATE, 'YYYY/MM/DD') || ' ' ||TO_CHAR(sysdate,'HH24:MI:SS.FF'), 'YYYY/MM/DD HH24:MI:SS.FF') 

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-07-11 05:15:46

如果您知道:basedate对于给定的用户体验(任务的执行)是常量,那么您的第一步应该是计算sysdate和:basedate之间的间隔。执行此命令一次,找出问题并在以后最大限度地减少CPU消耗:

代码语言:javascript
复制
select numtodsinterval(sysdate - :basedate, 'DAY') dsinterval
from dual;

然后,您可以将insert语句文本中的systimestamp替换为:

代码语言:javascript
复制
systimestamp - :dsinterval

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

代码语言:javascript
复制
systimestamp - numtodsinterval(sysdate - :basedate, 'DAY')

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

代码语言:javascript
复制
to_date(:basedate)

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

代码语言:javascript
复制
to_date(:basedate, 'some date format string')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44982816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档