首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将天数添加到时间戳中,并得到一个时间戳。

将天数添加到时间戳中,并得到一个时间戳。
EN

Stack Overflow用户
提问于 2021-10-15 12:33:13
回答 2查看 610关注 0票数 2

在Spark中,我找不到将天数添加到时间戳并接收回时间戳的函数,因此我可以使用计算值来这样做。

这是可行的,但是静态

代码语言:javascript
运行
复制
SELECT col1 + interval 2 days FROM 

VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)

我需要一个我可以计算的。这不起作用(我也不能用列值填充它):

代码语言:javascript
运行
复制
SELECT col1 + interval (5-3) days 

FROM VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)

这也是不好的(因为它返回日期):

代码语言:javascript
运行
复制
SELECT date_add(col1,1) FROM 

VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-16 10:24:37

与直接使用区间构造函数不同,您可以用concat SQL function构建表示间隔的字符串,然后使用cast SQL function将其转换为间隔。

代码语言:javascript
运行
复制
SELECT col1 + cast(concat(5-3, ' days') as interval)

FROM VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)

返回以下结果:

代码语言:javascript
运行
复制
+----------------------------------------------------------------------------------+
|CAST(col1 + CAST(concat(CAST((5 - 3) AS STRING),  days) AS INTERVAL) AS TIMESTAMP)|
+----------------------------------------------------------------------------------+
|2021-12-30 06:30:45.887                                                           |
+----------------------------------------------------------------------------------+
票数 2
EN

Stack Overflow用户

发布于 2021-10-15 14:11:57

一种方法是将时间戳转换为unix时间,并添加所需的秒数。

代码语言:javascript
运行
复制
scala> spark.sql("select from_unixtime(unix_timestamp('2021-10-15 10:11:12') + 10 * 24*60*60) plus10days").show(false)
+-------------------+
|plus10days         |
+-------------------+
|2021-10-25 10:11:12|
+-------------------+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69584800

复制
相关文章

相似问题

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