【问题标题】:How to convert Date-time into Date using Netezza如何使用 Netezza 将日期时间转换为日期
【发布时间】:2014-01-27 21:52:57
【问题描述】:

我正在做一些计算,但我的计算已关闭,因为我的日期字段显示时间戳,我只想在我进行计算时用作日期。我怎么能在计算时忽略分钟而只使用日期?这是我所拥有的:

SELECT EF.DSCH_TS,
       CASE WHEN EXTRACT (DAY FROM  EF.DSCH_TS - EF.ADMT_TS)>=0 THEN 'GroupA' END AS CAL
FROM MainTable EF;

【问题讨论】:

    标签: sql datetime netezza


    【解决方案1】:

    Netezza 有内置功能,只需使用:

    SELECT DATE(STATUS_DATE) AS DATE,
           COUNT(*) AS NUMBER_OF_             
    FROM X
    GROUP BY DATE(STATUS_DATE)
    ORDER BY DATE(STATUS_DATE) ASC
    

    这将只返回时间戳的日期部分,并且比使用TO_CHAR() 将其转换为字符串更有用,因为它可以在GROUP BYHAVING 和其他netezza 日期函数中使用。 (而 TO_CHAR 方法不会)

    此外,DATE_TRUNC() 函数将从时间戳(“日”、“月”、“年”等)中提取特定值,但不超过其中一个,没有多个函数并连接。

    DATE() 是对此问题的完美而简单的答案,我很惊讶在 Stack 上看到这么多对这个问题的误导性答案。我经常看到TO_DATE,这是Oracle 的功能,但不适用于Netezza

    通过您的查询,假设您对两个时间戳的午夜到午夜之间的天数感兴趣,它看起来像这样:

    SELECT EF.DSCH_TS,
      CASE
        WHEN EXTRACT (DAY FROM (DATE(EF.DSCH_TS) - DATE(EF.ADMT_TS)))>=0 THEN 'GroupA'
      END AS CAL
    FROM MainTable EF;
    

    【讨论】:

    • @moe 这应该被标记为问题的答案。将时间戳转换为日期会删除该字段的所有时间详细信息,这正是问题标题所要做的。
    【解决方案2】:

    您可能需要考虑重写您的 case 语句以返回 interval。这将允许更多的灵活性。

            SELECT EF.DSCH_TS,
        CASE 
    WHEN  age(date(EF.DSCH_TS),date(EF.ADMT_TS))>= interval '6 days' 
        THEN 'GroupA' END AS CAL
            FROM MainTable EF;
    

    【讨论】:

      【解决方案3】:

      date_trunc()'day' 的第一个参数一起使用。我想这就是你想要的:

      SELECT EF.DSCH_TS,
             (case when date_trunc('day', EF.DSCH_TS) >= date_trunc('day', EF.ADMT_TS) THEN 'GroupA' END) AS CAL
      FROM MainTable EF;
      

      【讨论】:

      • 我收到错误:函数 'DATE_TRUNC(TIMESTAMP)' 不存在
      • @moe 。 . .我在第二次调用中留下了第一个参数。
      • 谢谢 Gordon,这行得通,但我对这个功能有点困惑。如果我希望我的条件是这样的,我将如何修改:EF.DSCH_TS > 6?因为我想测试天数何时大于 0 或 1、2,3 等,所以我有很多案例陈述,我没有在这里展示。感谢您的澄清...
      • 我认为您会将date_trunc() 调用放在extract(day from . . .) 中。
      • 您是如何做到的,请您告诉我,因为我无法做到这一点。谢谢
      猜你喜欢
      • 1970-01-01
      • 2011-04-14
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      相关资源
      最近更新 更多