【问题标题】:How to convert an integer (time) to HH:MM:SS::00 in Progress SQL如何将整数(时间)转换为 HH:MM:SS::00 正在进行 SQL
【发布时间】:2021-12-22 06:03:30
【问题描述】:

我需要创建一个 SQL 脚本来将整数字段转换为 varchar。我的数据库是 Progress DB。 此整数字段 (nrHoraRegistro) 具有转换为整数的时间戳。

有没有办法在 Progress SQL 中编写查询来转换它?

亲切的问候, 朱利亚诺

【问题讨论】:

  • 54671 在时间方面是什么意思?你想用什么公式?
  • 你好@TheImpaler,54671 是 15:11:11,HH:MM:SS。我是使用 Disp String(nrHoraRegistro,'HH:MM:SS') 得到的。
  • 所以这个数字是从午夜开始的秒数。
  • 嗯好的,尽管如此.. 你知道我怎样才能知道自午夜以来的秒数的 HH:MM:SS 吗?

标签: sql openedge progress-db


【解决方案1】:

基于我之前给出的answer

select
   to_char( 
      timestampadd( 
         sql_tsi_second, 
         nrHoraRegistro,
         curdate() 
      ),
      'hh24:mi:ss' 
   )
from
   pub.testtable

【讨论】:

  • 您好,谢谢!你的解决方案要好得多:)
【解决方案2】:

好吧,作为一种解决方法,我做了:

SELECT right('00' + to_char(floor(54671/3600)), 2) + ':' +
right('00' + to_char(MOD(54671,3600)/60), 2) + ':' +
right('00' +to_char(MOD(MOD(54671,3600),60)) , 2) as nrHoraRegistro

来自 PUB.XXX

【讨论】:

    【解决方案3】:

    您可以使用此转换:

    SELECT (to_timestamp(54671) at time zone 'UTC')::time

    结果如下:

    Returned value:
    +----------+
    | 15:11:11 |
    +----------+
    

    【讨论】:

    • 嗨,使用 SQL Explorer 吗?
    • 它是纯 PostgreSQL,您可以在查询中将 54671 替换为列名 (nrHoraRegistro),它会像魅力一样工作。
    • 我没有使用 PostgreSQL,我使用的是 Progress DB
    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多