【问题标题】:postgresql cast numeric to date and formatpostgresql 将数字转换为日期和格式
【发布时间】:2023-03-09 08:06:01
【问题描述】:

我在 postgresql 中将日期字段设为数字,日期中的值类似于 1401710352000,当我尝试使用 to_timestamp(date) 对其进行转换时,我得到相应的时间戳为“46388-06-07 10:40: 00+00"

我尝试用谷歌搜索它,我发现了关于如何在 postgresql 中进行不同类型转换的非常有用的函数,但我找不到如何将数字日期转换为适当的可读格式。如果有人能告诉我如何将数字日期字段转换为时间戳/日期可读格式,我会很高兴

沙赫

【问题讨论】:

    标签: postgresql type-conversion to-date


    【解决方案1】:

    来自fine manual

    to_timestamp(double precision)
    带时区的时间戳
    将 Unix 纪元转换为时间戳

    Unix 纪元以秒为单位,但看起来您的数值以毫秒为单位。如果我们修复这些单位,那么我们会得到一些看起来合理的东西:

    => select to_timestamp(1401710352000::numeric/1000);
          to_timestamp      
    ------------------------
     2014-06-02 04:59:12-07
    

    因此,您可能只需要在调用to_timestamp 之前将单位除以 1000。

    【讨论】:

    • 日期格式正确但转换的日期仍然错误.. to_timestamp(1505468541312:numeric/1000) .....它应该是 currentdate 即 2017-09-25 ....但它会在 2017 年 9 月 15 日到来
    • 什么是 :: 在上面的演员表中?
    • @JGS 是的,:: 是一种类型转换,与cast(1401710352000 as numeric) 相同,否则/ 将是整数除法。为什么您希望 1505468541312 是当前日期?上述格式的当前日期为1506297600000
    • 当我在现有数据库表中插入一条记录时,它将此值插入为当前日期的 1505468541312
    • @JGS 你是怎么插入的?你什么时候插入的?
    【解决方案2】:

    我在几秒钟内就有了“fecha”字段。我必须将其转换为日期才能进行比较(格式化)。我是这样做的:

    select to_char(to_timestamp(fecha),'DD/MM/YYYY') from...
    

    【讨论】:

      猜你喜欢
      • 2017-10-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      相关资源
      最近更新 更多