我有一个包含时间戳号TEST1 (TIMESTAMP)
的表,我想创建另一个表TEST2
,它显示第一个表中的(TIMESTAMP, TIME)
(TIME
字段显示转换为date
的timestamp
)。我试过这个
insert into TEST2
values (TEST1.TIMESTAMP,to_date('1970-01-01 ','yyyy-mm-dd ') +
(TEST1.TIMESTAMP)/60/60/24 ,'YYYY-MM-DD');
字符串
可以有帮助!
1条答案
按热度按时间6ie5vjzr1#
假设TIMESTAMP列确实以秒为单位,那么您的代码几乎是正确的。然而:
to_date('1970-01-01', 'yyyy-mm-dd')
是正确的,但你必须添加一个数字-简单明了。即:+ TIMESTAMP/60/60/24
。就这样!或者,为了避免舍入错误,您可以执行以下操作
字符串
注意,固定日期也可以简单地写为
型
最后:如果要存储日期部分,请将相加的结果 Package 在
TRUNC(...)
中,它将截断到一天的开始。或者,您可以使用算术表达式,不使用INTERVAL
和TRUNC
,而是添加TRUNC(TEST1.TIMESTAMP)/60/60/24
-这将把秒截断为整数天。请注意,Oracle中的日期没有“格式”(格式仅适用于日期的文本表示,而不适用于日期本身)。
EDIT:看来你还需要INSERT语句的帮助。当您使用另一个表中的数据插入到一个表中时,您不会INSERT...价值观,你插入…SELECT。类似于(使用您选择不当的列名-选择不当是因为它们是Oracle关键字):
型
请注意,没有调用TO_CHAR或TO_DATE;并且不存在像“yyyy-mm-dd”的格式模型。SQL标准日期文字
date '1970-01-01'
的一个优点是,它只接受一种格式'yyyy-mm-dd'
(甚至连连破折号都是必须的;/
将被拒绝)。如果你想看看表TEST 2中的内容:
型
如果您不喜欢日期的显示方式,您可以控制它:
型