首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为时间戳字段插入SYSTIMESTAMP

为时间戳字段插入SYSTIMESTAMP
EN

Stack Overflow用户
提问于 2021-01-19 20:59:41
回答 3查看 847关注 0票数 0

我的SQL表中有三个时间戳。

代码语言:javascript
复制
Column Name     Data Type   Nullable Data_Default

STATUS_TIMSTM   TIMESTAMP(6)    No  (null)
CREATED_TIMSTM  TIMESTAMP(6)    No  SYSTIMESTAMP  
UPDATED_TIMSTM  TIMESTAMP(6)    No  (null)
代码语言:javascript
复制
INSERT INTO "TABLE_NAME" ("STATUS_TIMSTM","CREATED_TIMSTM","UPDATED_TIMSTM")
VALUES(TIMESTAMP '2020-12-10 00:00:00', TIMESTAMP '2020-06-15 00:00:00',TIMESTAMP '2020-06-15 00:00:00');

以上操作正确。

如何插入当前的systimestamp

我尝试了几种选择: curdate()、now()、systimestamp()。

我通常会收到诸如: ORA-00904:"NOW":无效标识符00904等错误。00000 - "%s:无效标识符“

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-19 23:57:48

由于您已经具有数据默认值,所以只有以以下格式插入数据时,才必须使用当前的CREATED_TIMSTM填充TIMESTAMP列。

代码语言:javascript
复制
INSERT INTO "TABLE_NAME" ("STATUS_TIMSTM","UPDATED_TIMSTM")
VALUES(TIMESTAMP '2020-12-10 00:00:00', TIMESTAMP '2020-06-15 00:00:00');

下面是一个简单的DB小提琴演示了相同的内容。

票数 0
EN

Stack Overflow用户

发布于 2021-01-19 21:18:36

您应该能够使用current_timestamp

代码语言:javascript
复制
create table t (x   TIMESTAMP(6));

insert into t (x) values (current_timestamp);

当然,systimestamp也应该能工作。

这里是db<>fiddle。

票数 1
EN

Stack Overflow用户

发布于 2021-01-19 22:18:39

在甲骨文里

代码语言:javascript
复制
insert into my_table(timestamp_column) values (systimestamp);

注意,函数调用执行,而不是,在函数名之后包含括号。在这方面,Oracle是非常奇怪的;函数不接受参数,但是如果您定义了自己,那么必须使用空括号,但是Oracle 提供的类似函数(没有参数)必须不带括号地使用。只有Oracle知道为什么这样不一致。这就解释了为什么你的尝试失败了。

(实际上,对systimestamp的一些实验表明,可以使用一个参数--一个正整数,它显示了您想要的小数位数秒数!)无论如何,不能用空括号来使用它。)

还有其他的“当前”时间戳函数,但它们所做的事情不同。systimestamp返回承载数据库服务器的计算机系统的时间戳。(请注意,这可能而且经常与数据库时间戳不同。)在任何情况下,systimestamp都是其中最常用的;类似于日期的sysdate

不过要小心时区。systimestamp返回带有时区的时间戳。通过将其插入timestamp列,您将丢失信息。你的商业申请可以吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65799458

复制
相关文章

相似问题

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