【问题标题】:Teradata SQL - How do I add hours to an integer?Teradata SQL - 如何将小时数添加到整数?
【发布时间】:2019-10-28 19:21:44
【问题描述】:

我有一个表,其中有一列名为 ID_PRT_TM。例如,

 SELECT TOP 10 ID
        , ID_PRT_TM 
 FROM STG_OUT.example_table;

|  ID   |  ID_PRT_TM  |
+-------+-------------+
| 21018 |     641     |
| 20852 |    1056     |
| 24815 |    1442     |
| 20711 |     620     |
| 21554 |    1315     |
| 23341 |     936     |
| 21029 |    1056     |
| 20711 |     610     |
| 21555 |     918     |
| 20853 |     745     |

ID_PRT_TM 是一个表示小时和分钟的整数。例如,641 是上午 6:41,而 13:15 是下午 1:15。我想给他们增加三个小时,但不知道怎么做。

【问题讨论】:

  • ID_PRT_TM 上加 300 不就这么简单吗? SELECT TOP 10 ID, (ID_PRT_TM + 300) AS ID_PRT_TM FROM STG_OUT.example_table;
  • @KadeM。 .... 哇。我想你是对的。我肯定花了 3 个小时来过度复杂化。谢谢。
  • 讽刺的是,简单的事情往往令人难以置信:)。这不考虑的一件事是翻转(即晚上 10 点 + 3 小时 = ?)...如果有可能,值得考虑。
  • 有趣的地方。我的流程不会超过下午 5 点,所以我认为我还可以。
  • 也许将其存储为时间/时间戳而不是整数?这样操作起来就容易多了。

标签: sql casting integer teradata


【解决方案1】:

你可以加300:

select id_prt_tm + 300

如果您的工作时间限制在 2400 小时,请使用更高级的逻辑:

select (case when id_prt_tm < 2100 then id_prt_tm + 300
             else id_prt_tm - 2100
        end)

或者为了更难以理解:

select (id_prt_tm + 300) mod 2400

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多