将 select 和 dateadd 函数中的结果集插入到同一个表中

Posted

技术标签:

【中文标题】将 select 和 dateadd 函数中的结果集插入到同一个表中【英文标题】:Inserting resultset from select and dateadd function into same table 【发布时间】:2016-07-19 09:49:40 【问题描述】:

我的 H2 数据库中有“测试”表,其中有一些时间戳。 我正在使用“DATEADD”函数将“_time”列转换为正常日期。

我希望我的选择查询的结果插入到“_converted_time”中

sql> select * from test;
| _TIME         | _CONVERTED_TIME
| 1468309423961 | null
| 1468309423962 | null
| 1468308812001 | null
| 1468308815972 | null
(4 rows, 10 ms)
sql> 
sql> 
sql> select DATEADD('SECOND', SUBSTRING(_time,1,10), DATE '1970-01-01') from test;
DATEADD('SECOND', SUBSTRING(EVENT_TIME, 1, 10), DATE '1970-01-01')
2016-07-12 07:43:43.0
2016-07-12 07:43:43.0
2016-07-12 07:33:32.0
2016-07-12 07:33:35.0

因此在将上述结果添加到 _converted_time 之后,它应该看起来像 ::

sql> select * from test;
| _TIME         | _CONVERTED_TIME
| 1468309423961 | 2016-07-12 07:43:43.0
| 1468309423962 | 2016-07-12 07:43:43.0
| 1468308812001 | 2016-07-12 07:33:32.0
| 1468308815972 | 2016-07-12 07:33:35.0
(4 rows, 10 ms)

提前致谢...

【问题讨论】:

您正在寻找update 是的,我想通过将这些结果集添加到表中来更新表 【参考方案1】:

试试这个

update test
set CONVERTED_TIME = DATEADD('SECOND', SUBSTRING(_time,1,10), DATE '1970-01-01') 
WHERE CONVERTED_TIME IS NULL;

【讨论】:

这个查询将一次又一次地做同样的工作......因为将来如果插入一些 _time 值,它应该从它离开的地方恢复......我们可以这样做吗??

以上是关于将 select 和 dateadd 函数中的结果集插入到同一个表中的主要内容,如果未能解决你的问题,请参考以下文章

jpa 查询中不支持 DateAdd 函数

嗯。。。。。SQL函数名之DATEADD的用法

SQL获取一天中的开始和结束时间

JDBC 模板中的 DATEADD

将 dateadd 和 datepart 从 sybase 迁移到 oracle

Perl OLE32 MSSQL dateadd 函数结果上的“光标类型已更改”错误