Sql bigInt到日期转换出现错误

Sql bigInt到日期转换出现错误,sql,amazon-redshift,Sql,Amazon Redshift,我有一个bigint类型的列_action_date 其中存储的示例数据为: 1,530,402,820,197,192 我想把日期转换成没有时区格式的时间戳 我尝试使用timestamp方法,但对于bigint来说失败了。 然后我将其除以1000000,以消除毫秒部分。 但是我的日期错了 请帮我弄清楚这个问题 我用在线epoch Converter转换了它,它给了我这个结果 GMT: Saturday, 30 June 2018 23:53:40 Your time zone: Sunday

我有一个bigint类型的列_action_date

其中存储的示例数据为:

1,530,402,820,197,192
我想把日期转换成没有时区格式的时间戳

我尝试使用timestamp方法,但对于bigint来说失败了。 然后我将其除以1000000,以消除毫秒部分。 但是我的日期错了

请帮我弄清楚这个问题

我用在线epoch Converter转换了它,它给了我这个结果

GMT: Saturday, 30 June 2018 23:53:40
Your time zone: Sunday, 1 July 2018 05:23:40 GMT+05:30
我想要同样的结果

我正在使用Amazon Redshift

和一些适合我的演员作品:

SELECT TIMESTAMP WITHOUT TIME ZONE 'epoch' + (1530402820197192::bigint::float / 1000000) * INTERVAL '1 second';
当然,将1530402820197192::bigint替换为您的专栏也会有所帮助。

使用一些铸造技术对我来说效果很好:

SELECT TIMESTAMP WITHOUT TIME ZONE 'epoch' + (1530402820197192::bigint::float / 1000000) * INTERVAL '1 second';

当然,用列替换1530402820197192::bigint也会有所帮助。

为什么不试试下面的方法呢

SELECT
tick.value
 , CAST((tick.value - 599266080000000000) / 864000000000 AS datetime) as DateTimeCalc1
FROM (values 
  (convert(bigint,1,530,402,820,197,192)) 
) AS tick(value);
select dateadd(s, convert(bigint, 1,530,402,820,197,192) / 1000, convert(datetime, '1-1-1970 00:00:00'))
或者您可以使用以下命令

SELECT
tick.value
 , CAST((tick.value - 599266080000000000) / 864000000000 AS datetime) as DateTimeCalc1
FROM (values 
  (convert(bigint,1,530,402,820,197,192)) 
) AS tick(value);
select dateadd(s, convert(bigint, 1,530,402,820,197,192) / 1000, convert(datetime, '1-1-1970 00:00:00'))

除以1000,只需减少sql操作设施的bigint

为什么不试试下面的方法

SELECT
tick.value
 , CAST((tick.value - 599266080000000000) / 864000000000 AS datetime) as DateTimeCalc1
FROM (values 
  (convert(bigint,1,530,402,820,197,192)) 
) AS tick(value);
select dateadd(s, convert(bigint, 1,530,402,820,197,192) / 1000, convert(datetime, '1-1-1970 00:00:00'))
或者您可以使用以下命令

SELECT
tick.value
 , CAST((tick.value - 599266080000000000) / 864000000000 AS datetime) as DateTimeCalc1
FROM (values 
  (convert(bigint,1,530,402,820,197,192)) 
) AS tick(value);
select dateadd(s, convert(bigint, 1,530,402,820,197,192) / 1000, convert(datetime, '1-1-1970 00:00:00'))


除以1000只减少sql操作工具的bigint

尝试:选择to_timestampbig_int_字段::text,'YYYYMMDDHH24MISS'

尝试:选择to_timestampbig_字段::text,'yyyyymmddhh24miss'

to_CHARTO_TIMESTAMPbigint_字段/1000,'DD/MM/yyyyyyyy24:MI:SS'请尝试此操作。从@VishnuVaNnErI获取运行您的查询后我收到此错误:运行查询时出错:函数to_timestampbigint不存在提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换。您需要对其进行转换,函数为\u timestampdouble precision1530402820197192不是有效的bigint to begin with Amazon不支持Postgres。亚马逊采用了Postgres 8.0的代码,并继续独立于真实的Postgres代码进行开发,从未费心将核心Postgres开发的增强功能重新集成到其产品中。这是两种不同的产品,它们仍然将版本显示为PostgreSQL,这让人非常恼火,即使JDBC驱动程序假装它是Postgres databaseTO_CHARTO_TIMESTAMPbigint_field/1000,'DD/MM/YYYY HH24:MI:SS'请尝试一下。从@VishnuVaNnErI获取运行您的查询后我收到此错误:运行查询时出错:函数to_timestampbigint不存在提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换。您需要对其进行转换,函数为\u timestampdouble precision1530402820197192不是有效的bigint to begin with Amazon不支持Postgres。亚马逊采用了Postgres 8.0的代码,并继续独立于真实的Postgres代码进行开发,从未费心将核心Postgres开发的增强功能重新集成到其产品中。这是两种不同的产品,令人非常恼火的是,它们仍然将版本显示为PostgreSQL,甚至JDBC驱动程序假装它是Postgres数据库获取此错误:运行查询时出错:语法错误位于或接近,第6行:convertbigint,1530402820197192^请尝试第二个选项这是错误的答案,它返回红移测试时的错误数据。获取此错误:运行查询时出错:语法错误,第6行:convertbigint,1530402820197192^请尝试第二个选项。这是一个错误的答案,它返回红移测试时的错误数据。请不要仅将代码作为答案发布,但也要解释一下你的代码是做什么的,以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,并且更有可能吸引更多的投票。请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。