首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Netezza将日期-时间转换为日期

如何使用Netezza将日期-时间转换为日期
EN

Stack Overflow用户
提问于 2014-01-28 05:52:57
回答 3查看 24.8K关注 0票数 3

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

代码语言:javascript
复制
SELECT EF.DSCH_TS,
       CASE WHEN EXTRACT (DAY FROM  EF.DSCH_TS - EF.ADMT_TS)>=0 THEN 'GroupA' END AS CAL
FROM MainTable EF;
EN

回答 3

Stack Overflow用户

发布于 2015-02-11 04:02:37

Netezza为此提供了内置函数,只需使用:

代码语言:javascript
复制
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,这是甲骨文的函数,但不能在Netezza上工作。

对于您的查询,假设您对两个时间戳中午夜到午夜之间的日期感兴趣,它将如下所示:

代码语言:javascript
复制
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;
票数 3
EN

Stack Overflow用户

发布于 2014-01-28 10:48:23

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

代码语言:javascript
复制
        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;
票数 2
EN

Stack Overflow用户

发布于 2014-01-28 05:55:45

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

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21392490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档