首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数可以获得历元毫秒或将时间转换为毫秒,而不需要将毫秒转换为秒。

问函数可以获得历元毫秒或将时间转换为毫秒,而不需要将毫秒转换为秒。
EN

Stack Overflow用户
提问于 2022-07-14 10:41:30
回答 1查看 76关注 0票数 0

是否有一种方法可以在时代毫秒内获得日期,或者在蜂巢中得到日期呢?有些函数像"unix_timestamp()“和"from_unixtime()”,但是它们只工作秒。

P.S :我的用例限制我将秒转换为毫秒(秒*1000 =millis)

背景->,我想写一个查询,它应该在hive和雪花中运行,而不改变语法,但是HIVE中列的数据类型是BIGINT,而雪花中的数据类型是时间戳。unix_timestamp('20220714','yyyyMMdd')*1000 > SomeColumn

我在雪花中为unix_timestamp创建了函数,如下所示,它的工作方式与hive函数相同,即它将给定的字符串转换为纪元秒:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION UNIX_TIMESTAMP(DATE_INPUT String, FORMAT STRING)
RETURNS BIGINT
LANGUAGE SQL
AS $$
  DATE_PART(EPOCH_SECOND,TO_TIMESTAMP(DATE_INPUT,FORMAT))
$$;

但是雪花中的问题是"<“操作符的左边值是整数,而右边的列是时间戳,这会导致雪花中的错误。

EN

回答 1

Stack Overflow用户

发布于 2022-07-14 11:08:06

我认为最好的解决方案是在蜂箱和雪花上创建一个功能:

代码语言:javascript
复制
CREATE FUNCTION unix_timestamp_ms(date_input STRING, format STRING)
 RETURNS BIGINT
BEGIN
 RETURN unix_timestamp(date_input,format)*1000
END;

请注意,我不能检查上面的函数,我只是假设它将基于HPL/SQL文档工作。http://www.hplsql.org/about

因此,在创建该函数之后,您的查询将类似于:

代码语言:javascript
复制
WHERE unix_timestamp_ms('20220714','yyyyMMdd') > SomeColumn

在雪花中,您将创建这样的函数(不需要转换为纪元):

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION unix_timestamp_ms(DATE_INPUT String, FORMAT STRING)
RETURNS TIMESTAMP
LANGUAGE SQL
AS $$
  TO_TIMESTAMP(DATE_INPUT,FORMAT)
$$;

因此,您可以对蜂箱和雪花使用相同的查询。

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

https://stackoverflow.com/questions/72979187

复制
相关文章

相似问题

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