【问题标题】:bigInt to date conversion giving errorsbigInt 到日期转换给出错误
【发布时间】:2018-09-18 06:04:34
【问题描述】:

我有一列 _action_date 是 bigint 类型。

其中存储的示例数据为:

1,530,402,820,197,192

我想将日期转换为没有时区格式的时间戳。

我尝试了 to_timestamp() 方法,但它对于 bigint 失败。 然后我将它除以 1000000 以消除毫秒部分。 但那我的日期是错误的。

请帮我解决问题。

我使用在线纪元转换器对其进行了转换,它给了我这个结果。

GMT: Saturday, 30 June 2018 23:53:40
Your time zone: Sunday, 1 July 2018 05:23:40 GMT+05:30

我想要同样的结果。

我正在使用 Amazon Redshift

【问题讨论】:

  • TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS') 请试试这个。来自stackoverflow.com/questions/5485502/…
  • @VishnuVaNnEr我在运行您的查询后收到此错误:运行查询时出错:函数 to_timestamp(bigint) 不存在提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。
  • 需要强制转换,函数为to_timestamp(double precision)
  • 1,530,402,820,197,192 不是一个有效的“bigint”开头
  • 亚马逊不“支持” Postgres。亚马逊采用 Postgres 8.0 的代码并独立于“真正的” Postgres 代码继续开发,并且从不费心将核心 Postgres 开发的增强功能集成回他们的产品中。这是两种不同的产品,而且它们仍然将版本显示为“PostgreSQL”(甚至 JDBC 驱动程序都假装它是 Postgres 数据库),这非常烦人

标签: sql amazon-redshift


【解决方案1】:

Using the special time epoch 有一些选角在这里对我很有效:

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

当然,用您的专栏替换 1530402820197192::bigint 也会有所帮助。

【讨论】:

    【解决方案2】:

    尝试:选择 to_timestamp(big_int_field::text, 'YYYYMMDDHH24MISS')

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票。
    【解决方案3】:

    你为什么不试试下面的

    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

    【讨论】:

    • 收到此错误:运行查询时出错:在“,”第 6 行或附近出现语法错误:(convert(bigint,1,530,402,820,197,192)) ^
    • 请尝试第二个选项
    • 这是一个不正确的答案,它返回了错误的数据(在 Redshift 上测试过)。
    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 2011-04-08
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多